我们正在使用Java安全API生成数字签名(PKCS7)。摘要算法为SHA-256,加密算法为RSA(SHA256withRSA)。
在本地计算机中使用SunRsaSign提供程序,在某些内容上生成了签名。 在WAS 8.0.0.2中使用IBMJCE提供程序,我们能够在相同的内容上生成相同的签名。
然而,问题是,我们不得不迁移回WAS 6.1。现在,生成的签名与上述2个生成的签名不同。我检查了所有3个案例中创建的消息摘要,并且在所有3个案例中都是相同的,但是在WAS 6.1的情况下签名是不同的。
WAS 6.1的IBMJCE提供商在SHA256withRSA加密方面是否存在任何已知问题?任何指针都将非常感激。感谢
答案 0 :(得分:1)
真的有问题吗?据我所知,这必须适用
signature = sign(message)
verify(signature) == message
不要求所有签名必须相同。那么这些签名的验证真的有问题吗?
答案 1 :(得分:0)
我们遇到了同样的问题,我们强迫Webspshere使用SUNJCE。以下是步骤。
所以在IBM Websphere控制台中转到 应用程序服务器&gt;服务器&gt; <处理定义> Java虚拟机
查找Generic JVM参数并添加以下内容。
-DamCryptoDescriptor.provider=SunJCE -DamKeyGenDescriptor.provider=SunJCE
然后复制
C:\JAVA\jdk1.6.0_34\jre\lib\ext\sunjce_provider.jar
到
C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\ext\sunjce_provider.jar
更改
C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\security\java.security
将以下Sun提供程序添加到java.security文件中的提供程序列表中。
#This will help Websphere to load
security.provider.13=com.sun.crypto.provider.SunJCE
security.provider.14=sun.security.provider.Sun
security.provider.15=sun.security.rsa.SunRsaSign
security.provider.16=sun.security.jgss.SunProvider
希望这有帮助。