go.sum 中的校验和是如何计算的?

我查看了https://go.dev/doc/modules/gomod-refhttps://go.dev/ref/mod#go-mod-tidy,在这两个页面上我都找不到任何文档来解释如何go.sum计算校验和。

校验和是如何go.sum计算的?


哈士奇WWW
浏览 248回答 2
2回答

桃花长相依

校验和是依赖项的哈希值。您要查找的文档是https://go.dev/ref/mod#go-sum-files。go.sum 中的每一行都有三个由空格分隔的字段:模块路径、版本(可能以 /go.mod 结尾)和散列。模块路径是散列所属模块的名称。版本是散列所属模块的版本。如果版本以 /go.mod 结尾,则哈希仅适用于模块的 go.mod 文件;否则,哈希值用于模块的 .zip 文件中的文件。哈希列由算法名称(如 h1)和 base64 编码的加密哈希组成,以冒号 (:) 分隔。目前,SHA-256 (h1) 是唯一受支持的哈希算法。如果将来发现 SHA-256 中的漏洞,将添加对另一种算法(名为 h2 等)的支持。示例 go.sum 行module version hash就像github.com/go-chi/chi v1.5.4 h1:QHdzF2szwjqVV4wmByUnTcsbIg7UGaQ0tPF2t5GcAIs= github.com/go-chi/chi v1.5.4/go.mod h1:uaf8YgoFazUOkPBG7fxPftUylNumIev9awIWOENIuEg=

翻翻过去那场雪

如果您询问实际如何计算哈希值,即您将哪些输入提供给 SHA-256 函数,请在此处进行描述: https: //cs.opensource.google/go/x/mod/+/refs/tags/ v0.5.0:sumdb/dirhash/hash.go这是一个要点,它允许您计算任意目录的模块哈希,而无需使用 go: https: //gist.github.com/MarkLodato/c03659d242ea214ef3588f29b582be70
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go