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.
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.
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: