Java 什么';jarsigner中*.SF文件的要点是什么?

Java 什么';jarsigner中*.SF文件的要点是什么?,java,jarsigner,Java,Jarsigner,我正在研究jarsigner是如何工作的,以及META-INF文件夹中每个文件的用途。据我所知,MANIFEST.MF包含zip/jar中每个文件的列表以及它的摘要。*.SF文件包含清单文件的摘要、每个文件的列表以及清单中该文件部分的摘要。最后,*.DSA/RSA文件包含.SF文件的数字签名。我的问题是,为什么需要SF文件?与简单地对清单文件进行签名并将其存储在.RSA/DSA文件中相比,它有什么优势 对文件名、内容或文件删除的任何更改都会导致清单更改,从而导致签名无效 可以随时使用jar工具将

我正在研究jarsigner是如何工作的,以及META-INF文件夹中每个文件的用途。据我所知,MANIFEST.MF包含zip/jar中每个文件的列表以及它的摘要。*.SF文件包含清单文件的摘要、每个文件的列表以及清单中该文件部分的摘要。最后,*.DSA/RSA文件包含.SF文件的数字签名。我的问题是,为什么需要SF文件?与简单地对清单文件进行签名并将其存储在.RSA/DSA文件中相比,它有什么优势


对文件名、内容或文件删除的任何更改都会导致清单更改,从而导致签名无效

可以随时使用
jar工具
将文件添加到
jar文件
。在每种情况下,
MANIFEST.MF文件
都会更新。如果
MANIFEST.MF文件
是已签名的文件,则
签名
将无效。但是,使用单独的
*.SF文件
仍然可以验证签名,前提是
*.SF文件
中列出的文件没有更改。

签名的格式是什么,以及您如何验证jar中的每个其他文件?它有什么优势?您实际上想解决什么问题?签名文件是通过对SF文件的二进制内容进行签名而生成的。如果没有SF文件,签名文件将通过对清单文件的二进制内容进行签名来生成。你到底想解决什么问题?只是想在使用之前了解一个工具清单文件没有签名字段。他们本可以添加一个(我想),但他们没有(通常给出的理由是害怕破坏旧代码)。至于Java中的实现,您似乎已经知道了。那么我们能帮你什么呢?.SF文件也没有签名字段。这只是对清单文件的重新散列,因此它与清单文件同构,而不修改清单文件(或清单文件格式)。