web-dev-qa-db-fra.com

Y a-t-il une bonne bibliothèque de cryptage GnuPg pour Java / Scala?

J'aimerais pouvoir chiffrer des fichiers sur disque et/ou données en mémoire à l'aide de GnuPg à partir d'A Java Application. Si possible, je voudrais éviter de faire des appels système au GPG Outils de ligne de commande.

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

Je développe et envisage d'exécuter l'application dans un environnement Linux, bien qu'une solution multi-plate-forme soit préférée.

39
James Shade

J'ai récemment dû travailler sur le cryptage GPG-Cryptage et la bibliothèque PGP de Bountycastle fait-elle l'affaire. Les étapes étaient

1) Ajouter la version dans les propriétés POM.XML

        <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 de mise en œuvre a ajouté le fournisseur avec Java Security

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

4) Le reste du code était simplement simple Java implémentation

    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 ça aide.

4
Vivek Kumar

Il y a https://github.com/smartrevolution/gnupg-for-java basé sur GPGME et fonctionne au-dessus de GNUPG 1.4. Nous le mettons à la mise à jour pour GNUPG 2.X et utilisez-le dans notre Android application. Vous pouvez obtenir le code à ceux ici:

3