JavaアプリケーションからGnuPGを使用してディスク上のファイルやメモリ内のデータを暗号化できるようにしたいコマンドラインツール。
推奨ライブラリはありますか、またはJava(またはScala)からのGPG暗号化への最良のアプローチを推奨できますか?
私はLinux環境でアプリケーションを開発して実行するつもりですが、クロスプラットフォームのソリューションが望ましいでしょう。
Java BouncyCastle.org のAPIを呼び出すことができます。
その ドキュメント の言及:
Bouncy Castle Cryptoパッケージは、暗号化アルゴリズムのJava実装です。
ここには openpgp ByteArrayHandlerの例 があります。
BouncyCastleはGnuPGを使用せず、JavaでOpenPGP(RFC2440)を実装しているため、いくつかの BouncyCastle暗号化とGnuGP暗号化の間の非互換性 が存在する可能性があります。
私は最近、GPG暗号化/復号化に取り組む必要があり、BountyCastleのPGPライブラリがうまく機能することを発見しました。手順は
1)pom.xmlプロパティにバージョンを追加します
<org.bouncycastle.version>1.46</org.bouncycastle.version>
2)次の依存関係を追加します
<!-- 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)実装クラスで、Java Security
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
4)コードの残りの部分は単純でしたJava実装
File encryptedFile = new File(encryptedFileName);
byte[] encryptedByteArray = FileUtils.readFileToByteArray(inputFile);
byte[] decryptedByteArray = ByteArrayHandler.decrypt(encryptedByteArray, passPhrase.toCharArray());
String decryptedString = new String(decryptedByteArray);
これがお役に立てば幸いです。
https://github.com/smartrevolution/gnupg-for-Java があり、これはgpgmeに基づいており、GnuPG 1.4の上で動作します。 GnuPG 2.x用に更新しており、Androidアプリで使用しています。これらのコードは次の場所で入手できます。