39 votes

Existe-t-il une bonne bibliothèque de chiffrement GnuPG pour Java / Scala?

Je voudrais pouvoir crypter des fichiers sur disque et / ou des données en mémoire en utilisant GnuPG à partir d'une application Java. Si possible, je voudrais éviter d'avoir à faire des appels système aux outils de ligne de commande GPG.

Existe-t-il une bibliothèque recommandée ou pouvez-vous recommander la meilleure approche pour le chiffrement GPG à partir de Java (ou Scala)?

Je suis en train de développer et j'ai l'intention d'exécuter l'application dans un environnement Linux, bien qu'une solution multiplateforme soit préférable.

26voto

VonC Points 414372

Vous pouvez essayer d'appeler l'API JAVA de BountyCastle.org.

Sa documentation mentionne:

Le Château Gonflable Crypto package Java est la mise en œuvre d'algorithmes de chiffrement.

Vous avez ici un exemple de openpgp ByteArrayHandler.

Il pourrait y avoir une incompatibilité entre BountyCastle de cryptage et de GnuGP de chiffrement , mais, depuis BountyCastle ne pas utiliser GnuPG, mais plutôt implémente la norme OpenPGP (RFC2440) en Java.

4voto

Vivek Kumar Points 101

J'ai récemment eu à travailler sur GPG de chiffrement-déchiffrement et de ne trouver BountyCastle PGP de la bibliothèque fait le tour. Les étapes ont été

1) Ajout de la version en pom.xml propriétés

        <org.bouncycastle.version>1.46</org.bouncycastle.version>

2) Ajouter les dépendances suivantes

        <!-- Dependency for PGP and GPG Encryption-Decryption -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcmail-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpg-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15</artifactId>
            <version>${org.bouncycastle.version}</version>
        </dependency>

3) Dans la classe d'implémentation ajouté le fournisseur de services de Sécurité Java

         Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

4) Le reste du code est tout simple de mise en œuvre Java

    File encryptedFile = new File(encryptedFileName);
    byte[]  encryptedByteArray = FileUtils.readFileToByteArray(inputFile);      
    byte[] decryptedByteArray = ByteArrayHandler.decrypt(encryptedByteArray, passPhrase.toCharArray());
    String decryptedString = new String(decryptedByteArray);

J'espère que cette aide.

3voto

Il est https://github.com/smartrevolution/gnupg-for-java qui est basé sur gpgme, et travaille sur le dessus de GnuPG 1.4. Nous sommes le mettre à jour pour GnuPG 2.x et sont de l'utiliser dans notre application Android. Vous pouvez obtenir le code pour ceux qui sont ici:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X