使用 SpongyCastle 导入 PGP 密钥并检查是否可以使用它解密后,我想添加密码以保护密钥环。所以我制作了一个加密副本:
secretKeyRing = PGPSecretKeyRing.copyWithNewPassword(secretKeyRing, new char[] {},
newPassPhrase.toCharArray(), PGPEncryptedData.CAST5,
new SecureRandom(), new BouncyCastleProvider());
我用以下方法测试解密:
testKey = secretKeyRing.getSecretKey().extractPrivateKey(newPassPhrase.toCharArray(), new BouncyCastleProvider());
显然,这很好用。
当我尝试使用此加密密钥解密文件时,使用相同的密码:
PGPPrivateKey testKey = secretKey.extractPrivateKey(passPhrase.toCharArray(),
new BouncyCastleProvider());
其中 secretKey 是密钥环的主密钥,我得到一个 PGPException 说
Exception constructing key
我觉得我错过了一些明显的东西。请随时询问更多详细信息。
这是在我正在构建的自定义 pgp 应用程序上,它只需要导入一个私钥,所以主密钥是唯一的密钥,AFAI 理解。