有没有一个好的 GnuPG 加密库用于 Java/Scala?[已关闭]
我希望能够使用Java应用程序中的GnuPG加密磁盘上的文件和/或内存中的数据。如果可能的话,我想避免对GPG命令行工具进行系统调用。
有没有推荐的库,或者你能推荐从Java(或Scala)加密GPG的最佳方法吗?
我正在开发并打算在Linux环境中运行该应用程序,尽管首选跨平台解决方案。
我希望能够使用Java应用程序中的GnuPG加密磁盘上的文件和/或内存中的数据。如果可能的话,我想避免对GPG命令行工具进行系统调用。
有没有推荐的库,或者你能推荐从Java(或Scala)加密GPG的最佳方法吗?
我正在开发并打算在Linux环境中运行该应用程序,尽管首选跨平台解决方案。
您可以尝试调用 BouncyCastle.org 的 JAVA API。
其文档提到:
Bouncy Castle Crypto软件包是加密算法的Java实现。
这里有一个openpgp ByteArrayHandler的例子。
不过,BouncyCastle加密和GnuGP加密之间可能存在一些不兼容性,因为BouncyCastle不使用GnuPG,而是在Java中实现OpenPGP(RFC2440)。
我最近不得不研究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.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);
我希望这有帮助。