gpt4 book ai didi

java - 签署 jar 文件时,签名文件 (*.SF) 的用途是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:31 27 4
gpt4 key购买 nike

正如我从 https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html 中了解到的那样使用 jarsigner 对 jar 文件进行签名的过程如下:

  1. list 文件使用每个文件的哈希列表进行更新:

    名称:com/qarks/util/files/diff/ui/main/DiffMergeFrame.classSHA-256-摘要:GZgPXG9YnmVGXb+hFwnJF4im4hb/qixX2Gs+ZNpdGFU=

    名称:com/qarks/util/ui/swing/PrintManager.classSHA-256-摘要:cO6XolXrk5NlHBocDF0fzojlwSAKlDoGsY/jdJ0fzdY=

  2. 签名文件 (*.SF) 已创建。它包含:

    • list 文件的哈希值
    • list 文件中主要属性的散列
    • list 文件中每个文件的哈希值。
  3. 签名 block 文件(*.RSA、*.DSA)已创建。存放*.SF签名文件的数字签名。

所以,我想知道为什么我们需要 *.SF - 为什么我们不能只签署 list 文件而不是 *.SF 文件?

还有在 *.SF 文件中包含哈希值的哈希值的目的是什么(额外检查?在什么情况下?)?

最佳答案

签名文件 ( .SF ) 代表 .jar 的签名者文件 - 技术上可以有多个。

要回答您的第二个问题,请想象一个 .jar 的情况文件在签名后被修改。 manifest文件将被更改,因此 .SF 中的哈希( *-Digest-Manifest ) 将不再匹配当前的 .manifest文件。

但是,如果只将新文件添加到 .jar它仍然会通过验证,因为验证算法(除其他外)会查看 .SF 中的每个条目。并针对 manifest 中的各个条目验证哈希值(manifest 中的新条目将被忽略)。

总而言之,.SF用于验证 .jar 中没有任何文件在签署时,已更改。

您可以阅读更多关于签名验证的信息 here .

关于java - 签署 jar 文件时,签名文件 (*.SF) 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com