当前位置: 首页 > 面试题库 >

是否可以在Java Manifest文件中拥有SHA1-Digest而无需实际使用密钥

张翰海
2023-03-14
问题内容

目前,我们使用jarsigner对我们的jar进行签名。然后,我们为某些特定类显示一些SHA1-Digest值,以向外部审核员证明代码在两次发行之间没有更改。

我们仅依靠META-INF/xxx.SF文件来获取摘要信息,而我们从不使用META-INF/xxx.DSA签名块文件。

由于我们只需要在代码中进行摘要计算,我想知道是否有可能.SF使用某些Java工具生成文件而无需实际使用键。

我阅读了http://docs.oracle.com/javase/6/docs/technotes/tools/windows/jarsigner.html,但看起来该密钥是强制性的。


问题答案:

这应该是可能的。MANIFEST.MF文件包含各个类文件的Base64编码的SHA-1。

从您的文档中:

In the manifest file, the SHA digest value for each source file is the
digest (hash) of the binary data in the source file. In the .SF file,
on the other hand, the digest value for a given source file is the
hash of the three lines in the manifest file for the source file.

因此,遍历所有类文件,计算SHA-1,将其格式显示在MANIFEST.MF中,然后对其进行哈希处理并按其格式显示在SF文件中。

计算不涉及任何键。

示例:考虑“ jce1_2_2.jar”(或任何您已经正确签名的)。这包含

  1. 表格的MANIFEST.MF条目

    Name: javax/crypto/KeyAgreement.class
    

    SHA1-Digest: c2p0JimzpV0dG+NChGLl5cI7MuY=

  2. 它们是“ KeyAgreement.class”的Base64(SHA1-1)(路径无关)。注意第三个空行。行尾为CRLF(Windows)。

  3. META-INF / 4JCEJARS.SF条目

    Name: javax/crypto/KeyAgreement.class
    

    SHA1-Digest: whGBXE+AvYO6wAoVCdnocOPIrsE=

这不是文件的哈希值,而是上面三行的哈希值。



 类似资料:
  • 问题内容: 如何用Java代码检查当前的JVM是否有无限强度的加密可用? 问题答案: 我认为您可能可以使用Cipher.getMaxAllowedKeyLength(),同时还将您使用的密码与已知的“良好”安全密码(例如AES)列表进行比较。 这是一篇参考文章,列出了自Java 1.4起当前最大的密钥大小管辖权限制(除非法律也有所改变,否则这些可能没有改变-参见下文)。 如果您在有密码进出口限制的

  • 我正在使用ADFS 2.0开发OIOSAML。我需要对IdP响应进行签名和加密。以下是我对SAML请求和响应的签名和加密工作原理的理解: < li>SP使用自己的证书密钥(Key-1)对请求进行签名 < li>IdP使用SP的公钥(Key-1)验证请求 < li>IdP使用自己的证书密钥(Key-2)对响应进行签名 < li>IdP使用SP提供的证书密钥(Key-3)加密响应声明 < li>SP使

  • 问题内容: 我正在尝试修复我的一个程序中的错误,我认为这可能是由于Hibernate弄清楚了如何在不调用其默认(或任何其他)构造函数的情况下实例化对象的实例。 问题答案: 实际上,是的,如果使用objenesis为您实例化对象,则可以在实例化对象时绕过构造函数。它执行字节码操作来实现此目的。 反序列化对象也将绕过构造函数。 使用反射无法做到这一点。

  • 问题内容: 如果JVM有机会在更多对象分配请求出现之前运行GC,那么JVM是否可以从OutOfMemoryError中恢复而无需重新启动? 各种JVM实现在这方面是否有所不同? 我的问题是关于JVM恢复,而不是用户程序试图通过捕获错误进行恢复。换句话说,如果将OOME抛出到应用程序服务器(jboss / websphere / ..)中,我是否必须重新启动它?或者,如果其他请求似乎没有问题,我可以

  • 我想为DropWizard创建几个yaml文件。其中一个包含敏感信息,另一个包含非敏感信息。 你能给我指出任何文档或例子如何在DropWizard中拥有多个配置吗?

  • 我正在使用C#的“Google. Apis. Bigquery. v2客户端库”。 我授权使用“服务帐户”搜索BigQuery(请参阅http://www.afterlogic.com/mailbee-net/docs/OAuth2GoogleServiceAccounts.html). 要创建X509证书,我使用Google开发者控制台中的p12密钥。然而,现在json键是默认的。我可以用它来代