Obsidian 的评论很准确:每个 Git 对象的名称是该对象内容的哈希 ID,因此任何使用该 ID 来查找和读取内容的东西都可以而且通常确实会验证提取的数据的哈希值与用作提取该数据的密钥的 ID 相匹配。
\n\n额外检查\xe2\x80\x94验证标记或提交\xe2\x80\x94中的GPG签名仅在您明确请求时进行。您可以请求git log默认检查此类签名,使用log.showSignature。
请注意Merkle 树中任何节点的完整性取决于您是否信任先前的节点免受第二原像攻击。如果您使用 GPG 签名的标签,这些标签中的签名会保护每个标签的数据(无论您信任 GPG 本身的程度如何),然后标签会保护其提交对象(无论您信任 SHA-1 的程度如何)。提交对象反过来保护其树,树保护其子树和 blob,而 blob 哈希则保护其内容。因此,如果您担心第二原像攻击,则应该进行不同类型的分析。如果您只关心随机数据损坏(如在旋转介质和/或非 ECC 内存上看到的那样),您可以像 Git 那样直接使用 SHA-1 哈希。
\n