java - 从哪个 java 版本 SHA-256 和 SHA256withRSA 支持签名 jar 文件的时间戳

标签 java security sha256

我的 jar 文件的签名中有以下条目

Timestamped by "CN=GlobalSign TSA for Advanced - G3 - 001-02, O=GMO GlobalSign K.K., C=JP" on Mo Apr 10 11:48:34 UTC 2017
 Timestamp digest algorithm: SHA-256
 Timestamp signature algorithm: SHA256withRSA, 2048-bit key

我已经发现在 java 版本低于 1.7.0_76 的系统上运行 jar 文件时,时间戳摘要算法中的 SHA-256 和时间戳签名算法中的 SHA256withRSA 会导致问题(jar 文件被视为未签名)。

谁能告诉我时间戳摘要和时间戳签名支持这两种算法的哪些 Java 版本?

最佳答案

低于 1.7.0_76 的 Java 版本不支持由 https://bugs.openjdk.java.net/browse/JDK-8049480 引起的时间戳 SHA-256 (修复包含在 1.7.0_76 http://www.oracle.com/technetwork/java/javase/2col/7u76-bugfixes-2389098.html 中)

从“Oracle JRE and JDK Cryptographic Roadmap”来看,SHA-1 仍未计划在代码签名时禁用。

所以我认为目前最好的选择(支持旧的 Java 版本)是使用 SHA-1 作为时间戳算法。 (在 8u101、7u111 以下用于签名在 8u101、7u111 或更高版本上使用 -tsadigestalg 选项)

我已经测试过签名的 jar 文件

Digest algorithm: SHA-256
Signature algorithm: SHA256withRSA, 2048-bit key
Timestamp digest algorithm: SHA-1
Timestamp signature algorithm: SHA1withRSA, 2048-bit key

在 Java 7、8、9(ea+174) 下工作良好

关于java - 从哪个 java 版本 SHA-256 和 SHA256withRSA 支持签名 jar 文件的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631322/

相关文章:

security - Symfony2 中的 scrypt 支持

为 HMAC SHA256 签名生成 key 的 Perl 代码?

java - 为什么我的 SHA-256 转换与此在线工具不符?

java - 如何多次哈希并在每轮中连接一个字符串

java - Netbeans profiler 保留内存计算错误?

java - 在哪些平台上没有jvm,或者与windows或linux相比功能有限的jvm

java - 如何处理已被另一个错误处理的错误?

java - 比较两个词(字符串)

Windows Azure 应用程序 - 黑客尝试?

android - 展示如何使用 Android ID 认证的示例代码