WAS 6.1 IBMJCE 提供程序生成错误的 sha256withrsa 签名

2022-09-03 03:05:38

我们正在使用 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 提供商在 SHA256 与 RSA 加密方面是否存在任何已知问题?任何指针将不胜感激。谢谢


答案 1

真的有问题吗?据我所知,这必须适用

signature = sign(message)  
verify(signature) == message  

不要求所有签名必须相同。那么,您在验证这些签名方面真的有问题吗?


答案 2

我们遇到了同样的问题,我们强迫Webspshere使用SUNJCE。以下是步骤。

因此,在 IBM Websphere 控制台中,转到应用程序服务器>服务器> Java 虚拟机>进程定义

查找通用 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

希望这有帮助。


推荐