我正在尝试使用 RSA 公钥和私钥解密和加密消息。
当我尝试读取 PGPObjectFactory.nextObject()
时,我得到 null
下面是我的代码。
Security.addProvider(new BouncyCastleProvider());
InputStream in = PGPUtil.getDecoderStream(new ByteArrayInputStream(encryptedString.getBytes()));
JcaPGPObjectFactory pgpFact;
PGPObjectFactory pgpF = new PGPObjectFactory(in, new JcaKeyFingerprintCalculator());
Object o = pgpF.nextObject(); // I get this null
PGPEncryptedDataList encList;
if(o instanceof PGPEncryptedDataList)
{
encList = (PGPEncryptedDataList) o;
}else {
encList = (PGPEncryptedDataList) pgpF.nextObject();
}
Iterator<PGPPublicKeyEncryptedData> itt = encList.getEncryptedDataObjects();
相同的代码可以在 java 1.8
中运行,但在 java 1.7 中运行时会出现此问题,
我使用的是所有充气城堡1.63
请帮忙 谢谢
最佳答案
以防万一有人遇到问题,即使尝试了所有方法仍然无法正常工作。
对于我的情况,默认情况下其位大小
仅允许256
,因为我的 key 位大小是2048
,其返回null
要解决此问题,请在您的 $JRE_HOME/lib/secuirty/
中添加 policy.jar
和 us-export.jar
java8
不需要添加。
如果你想检查你的java是否允许你的位大小,你可以通过以下方式检查。
System.out.println( javax.crypto.Cipher.getMaxAllowedKeyLength("AES"));
关于java - 充气城堡 PGPObjectFactory nextObject 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298598/