gpg --list-keys为空,但文件解密bouncycastle加密文件

时间:2018-07-19 15:50:02

标签: java encryption bouncycastle gnupg pgp

我目前在Java应用程序中使用BouncyCastle PGP从字符串中读取公共密钥,并使用该密钥加密文件。正在加载密钥...

Security.addProvider(new BouncyCastleProvider());
InputStream keyIn = new ByteArrayInputStream(publicKey.getBytes());
PGPPublicKeyRingCollection pgpKeyRing = new PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(keyIn), new JcaKeyFingerpringCalculator());
PGPPublicKey = pgpKeyRing.getKeyRings().next().getPublicKey();

可以使用

解密输出文件
gpg --decrypt file.gpg

即使gpg --list-keysgpg --list-secret-keys为空

这怎么可能?是否可能从其他地方读取钥匙圈?我在CentOS 7上,已删除〜/ .gnupg并重新创建了它。

我还尝试过更改用于加密的公共密钥,但它仍会解密。

1 个答案:

答案 0 :(得分:1)

事实证明,我的代码存在错误,并且正在写出PGP压缩文件的Ascii防护版本,但未加密。因为gpg --decrypt会解压缩该文件,即使密钥环中没有密钥也是如此,因为它从不进行检查。 gpg --debug-level 9对于解决这一问题很有帮助。