java - 充气城堡 PGPObjectFactory nextObject 返回 null

标签 java rsa bouncycastle

我正在尝试使用 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.jarus-export.jar java8 不需要添加。

如果你想检查你的java是否允许你的位大小,你可以通过以下方式检查。

System.out.println( javax.crypto.Cipher.getMaxAllowedKeyLength("AES"));

关于java - 充气城堡 PGPObjectFactory nextObject 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298598/

相关文章:

c# - Java BouncyCaSTLe AES 解密的 C# 等价物是什么?

java - 关于Java编程语言

java - 让 BouncyCaSTLe 解密 GPG 加密的消息

java - 如何避免有很多条件的很多 if-else

ssl - 原始 key (RSA、AES)生成与 SSL/TLS 性能

c# - 使用 C sharp 中的 RSA 对 128 字节的字节数组进行签名

c# - RSA - Math.pow 不准确

java - 我应该使用哪些 Java 加密算法?

java - 使用 Eclipse/MyEclipse 刷新 Swing 应用程序

java - Apache HttpComponents BasicHttpClientConnectionManager