Java bouncy castle PGPObjectFactory下一个对象返回null
我正在尝试用RSA公钥和私钥对消息进行解密和加密 当我尝试读取Java bouncy castle PGPObjectFactory下一个对象返回null,java,rsa,bouncycastle,Java,Rsa,Bouncycastle,我正在尝试用RSA公钥和私钥对消息进行解密和加密 当我尝试读取PGPObjectFactory.nextObject()时,我得到null 下面是我的代码 Security.addProvider(new BouncyCastleProvider()); InputStream in = PGPUtil.getDecoderStream(new ByteArrayInputStream(encryptedString.getBytes())); JcaPGPO
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();
Security.addProvider(新的BouncyCastleProvider());
InputStream in=PGPUtil.getDecoderStream(新的ByteArrayInputStream(encryptedString.getBytes());
JcaPGPObjectFactory pgpFact;
PGPObjectFactory pgpF=新的PGPObjectFactory(在中,新的JcaKeyFingerprintCalculator());
对象o=pgpF.nextObject();//我得到这个空值
PGPencryptedatalist;
if(o PGPEncryptedDataList的实例)
{
encList=(pgPencryptedatalist)o;
}否则{
encList=(pgpencryptedatalist)pgpF.nextObject();
}
迭代器itt=encList.getEncryptedDataObjects();
同样的代码在Java1.8
中运行,但在Java1.7中运行时,它给出了这个问题
我使用的是所有bouncy castel1.63
请帮忙
谢谢以防有人遇到问题,尽管尝试了所有方法仍然无法奏效 对于我的情况,默认情况下,它的
位大小
只允许256
,因为我的关键位大小是2048
它返回的null
要解决此问题,请在您的$JRE_HOME/lib/secuirty/
中添加policy.jar
和us export.jar
,以便java8
无需添加
如果您想检查您的java是否允许您的位大小,您可以通过以下方式进行检查
System.out.println(javax.crypto.Cipher.getMaxAllowedKeyLength(“AES”)代码>在我的例子中,位大小是2147483647
。和java8
。但仍然是空的。有什么想法吗?你能发布stacktrace和来源吗?对不起,我发现了我的问题。由于pgp版本行后没有空格,所以我将变为null。PGP结构问题。如果我在空白处放一个空格,它就工作了