17

我们正在使用 Java 安全 API 生成数字签名 (PKCS7)。摘要算法是SHA-256,加密算法是RSA(SHA256withRSA)。

使用本地计算机中的 SunRsaSign 提供程序,在某些内容上生成了签名。使用 WAS 8.0.0.2 中的 IBMJCE 提供程序,我们能够在相同的内容上生成相同的签名。

但是,问题是,我们不得不迁移回 WAS 6.1。现在,生成的签名与上述两种情况下生成的签名不同。我检查了在所有 3 种情况下创建的消息摘要,在所有 3 种情况下都是相同的,但在 WAS 6.1 的情况下签名不同。

WAS 6.1 的 IBMJCE 提供程序在 SHA256withRSA 加密方面是否存在任何已知问题?任何指针将不胜感激。谢谢

4

2 回答 2

1

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

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

不要求所有签名必须相同。那么你真的对这些签名的验证有问题吗?

于 2013-11-24T13:28:11.863 回答
0

我们遇到了同样的问题,我们强迫 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

希望这可以帮助。

于 2014-01-09T16:02:28.067 回答