【发布时间】:2014-01-10 00:02:28
【问题描述】:
我们正在使用 Java 安全 API 生成数字签名 (PKCS7)。摘要算法为SHA-256,加密算法为RSA(SHA256withRSA)。
使用本地计算机中的 SunRsaSign 提供程序,在某些内容上生成了签名。 使用 WAS 8.0.0.2 中的 IBMJCE 提供程序,我们能够在相同的内容上生成相同的签名。
但是,问题是,我们不得不迁移回 WAS 6.1。现在,生成的签名与上述两种情况下生成的签名不同。我检查了所有 3 种情况下创建的消息摘要,所有 3 种情况下都是相同的,但在 WAS 6.1 的情况下签名不同。
在 SHA256withRSA 加密方面,WAS 6.1 的 IBMJCE 提供程序是否存在任何已知问题?任何指针将不胜感激。谢谢
【问题讨论】:
-
+1 用于检查摘要是否相同。
-
您检查了整个 CMS 格式还是只检查了 PKCS#1 格式?你生成哈希的依据是什么?
-
我检查了整个 CMS 格式 (PKCS#7)。只有最后 4 行不同。我知道签名中不同的部分是加密摘要,即在 SIGNING_TIME 之后的部分。 (我一直使用与 SIGNING_TIME_OID 相同的日期/时间)。
-
我尝试使用 Signature.getInstanceOf("SHA256withRSA","SunRsaSign") 创建 Signature 实例,因为问题似乎出在 IBMJCE 提供程序上。但是在 Websphere 6.1 中找不到 SunRsaSign 我知道我们必须在 Webshphere_home 的 Java/jre/lib/security 文件夹的 java.security 文件中创建 sunrsasign 条目。但是我在 Webshphere 中根本找不到 sun.security.rsa 包。
-
显然,我能够使用 WAS 6.1.0.35 生成正确的签名。早些时候它是 6.1.0.25。还不知道这是否是因为缺少任何服务器策略的任何错误。谢谢大家
标签: java encryption websphere-6.1