- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 ECIES 密码来实例化 SealedObject,但失败并出现 NullPointerException
。我正在使用 Java JDK1.8.0_72 和在 Windows 10 上运行的 Bouncy CaSTLe bcprov-jdk15on v1.53。代码如下所示:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECIES");
kpg.initialize(new ECGenParameterSpec("secp256r1"));
KeyPair keyPair = kpg.generateKeyPair();
Cipher cipher = Cipher.getInstance("ECIES");
cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());
String toEncrypt = "Hello";
// Check that cipher works ok
cipher.doFinal(toEncrypt.getBytes());
// Using a SealedObject to encrypt the same string fails with a NullPointerException
SealedObject sealedObject = new SealedObject(toEncrypt, cipher);
代码成功调用“cipher.doFinal()”,但在实例化 SealedObject 时失败。堆栈跟踪是:
java.lang.NullPointerException: string cannot be null
at org.bouncycastle.asn1.ASN1OctetString.<init>(Unknown Source)
at org.bouncycastle.asn1.DEROctetString.<init>(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.ies.AlgorithmParametersSpi.engineGetEncoded(Unknown Source)
at java.security.AlgorithmParameters.getEncoded(AlgorithmParameters.java:362)
at javax.crypto.SealedObject.<init>(SealedObject.java:179)
我试图避免指定特定的提供程序(即 Bouncy CaSTLe)并避免任何特定于提供程序的类,例如 IESParameterSpec,因为该组件使用外部配置来指定要使用的算法。该组件旨在用作流动节点集群中消息传递库的一部分,其中每个节点可能使用不同的加密算法,因此 SealedObject 似乎是一个合理的选择,因为它可用于传递所使用的算法(任何使用加密的消息使用接收者的公钥,因此接收者必须拥有相应的私钥才能解密消息)。
欢迎任何想法或建议。
最佳答案
Bouncy CaSTLe 的 David Hook 查看并在 org.bouncycastle.jcajce.provider.asymmetric.ies.AlgorithmParametersSpi.engineGetEncoded
中发现了一个问题并在1.55b04中提供了修复。我对此进行了测试,它已经解决了这个问题。
再次感谢您的帮助 Maarten。
关于Java 8 使用带有 SealedObject 的 ECIES 密码失败,并显示 'NullPointerException' - 字符串不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35339382/
下面是我的代码。当我尝试打印密封对象时,它只显示 "javax.crypto.SealedObject@34dac684" private void encryptUserCodes(List use
我以rsa加密和解密为例。如果消息大于 110 字节,我无法解密。但错误说;数据不得超过 117 字节。为什么7字节不能用? 我的类(class): public class RSAEx {
我有两种加密和解密 java 对象的方法: a) 使用 SealedObject 并使用普通的 FileOutputStream 和 FileInputStream 保存和加载它 b) 使用Ciphe
我正在尝试使用 SealedObjects 通过 RMI 连接发送数据 target 是一个 SealedObject,密码是预先初始化的(据我所知是正确的),但是当我运行以下代码时,我得到一个 IO
我尝试使用 ECIES 密码来实例化 SealedObject,但失败并出现 NullPointerException。我正在使用 Java JDK1.8.0_72 和在 Windows 10 上运行
运行时错误如下: 线程“main”java.lang.ClassCastException中出现异常:类消息无法转换为类javax.crypto.SealedObject(消息位于加载程序“app”的
我是一名优秀的程序员,十分优秀!