web-dev-qa-db-ja.com

Java / Scala用の優れたGnuPG暗号化ライブラリはありますか?

JavaアプリケーションからGnuPGを使用してディスク上のファイルやメモリ内のデータを暗号化できるようにしたいコマンドラインツール。

推奨ライブラリはありますか、またはJava(またはScala)からのGPG暗号化への最良のアプローチを推奨できますか?

私はLinux環境でアプリケーションを開発して実行するつもりですが、クロスプラットフォームのソリューションが望ましいでしょう。

39
James Shade

Java BouncyCastle.org のAPIを呼び出すことができます。

その ドキュメント の言及:

Bouncy Castle Cryptoパッケージは、暗号化アルゴリズムのJava実装です。

ここには openpgp ByteArrayHandlerの例 があります。

BouncyCastleはGnuPGを使用せず、JavaでOpenPGP(RFC2440)を実装しているため、いくつかの BouncyCastle暗号化とGnuGP暗号化の間の非互換性 が存在する可能性があります。

26
VonC

私は最近、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);

これがお役に立てば幸いです。

4
Vivek Kumar

https://github.com/smartrevolution/gnupg-for-Java があり、これはgpgmeに基づいており、GnuPG 1.4の上で動作します。 GnuPG 2.x用に更新しており、Androidアプリで使用しています。これらのコードは次の場所で入手できます。