我在 Linux 上使用以下方法加密了一个文本文件:
gpg --cipher-algo AES256 -c file.txt
该命令要求输入密码,假设我们在这里输入“123”。
这个文件可以被简单地解密:
gpg -d file.txt.gpg
现在我想用 Java 解密这个文件,但不太清楚如何使用密码“123”来解密这个文件。具体来说,尚不完全清楚盐值和初始 vector 是什么,以及还需要什么。
最佳答案
GnuPG 实现了 OpenPGP 协议(protocol),Java 的原生类不直接支持该协议(protocol)。 OpenPGP 有其 own file format , 但也使用 slightly different variant of the CFB mode .
与其自己实现所有这些,不如选择 Bouncy Castle library .它还提供了一个 example how to decrypt a symmetrically encrypted message ,归结为解密 OutputStream out
的那些相关调用(链接示例中还提供了一些用于确定所用算法参数和压缩的更多代码):
PGPEncryptedDataGenerator encGen = new PGPEncryptedDataGenerator(
new JcePGPDataEncryptorBuilder(algorithm).setSecureRandom(
new SecureRandom()).setProvider("BC"));
encGen.addMethod(
new JcePBEKeyEncryptionMethodGenerator(passPhrase).setProvider("BC"));
OutputStream encOut = encGen.open(out, compressedData.length);
关于java - 如何在 Java 中通过 GnuPG 解密 AES256 加密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42957749/