Java gpg--列表密钥为空,但文件解密bouncycastle加密的文件

Java gpg--列表密钥为空,但文件解密bouncycastle加密的文件,java,encryption,bouncycastle,gnupg,pgp,Java,Encryption,Bouncycastle,Gnupg,Pgp,我目前正在Java应用程序中使用BouncyCastle PGP从字符串中读取公钥,并使用该密钥加密文件。正在加载密钥 Security.addProvider(new BouncyCastleProvider()); InputStream keyIn = new ByteArrayInputStream(publicKey.getBytes()); PGPPublicKeyRingCollection pgpKeyRing = new PGPPublicKeyRingCollection(P

我目前正在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 key
gpg--list secret key
为空

这怎么可能?可能是从别的地方读钥匙圈吗?我在CentOS 7上,我已经删除了~/.gnupg并重新创建了它


我还尝试将用于加密的公钥更改为,但它仍然会解密

事实证明,我的代码中有一个错误,正在编写一个Ascii铠装版本的PGP压缩文件,但没有加密。正如可能发生的那样,
gpg--decrypt
将解压缩此文件,即使密钥环中没有密钥,因为它从不进行检查
gpg——调试级别9有助于解决这个问题。

您从未显示过加密代码,这会使这个问题无法回答。请添加缺少的代码。我可能不会花时间发布适当的示例代码-但是如果有人遇到一个可以“解密”的文件,这个答案应该是一个足够的线索,但是他们认为他们不应该拥有ITA的密钥,因为这是一个问答对。出于您所述的原因,这个答案非常好,但是如果有代码显示错误,那就太好了。但这是你的决定。