我查看了https://go.dev/doc/modules/gomod-ref和https://go.dev/ref/mod#go-mod-tidy,在这两个页面上我都找不到任何文档来解释如何go.sum计算校验和。校验和是如何go.sum计算的?
2 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
校验和是依赖项的哈希值。您要查找的文档是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=
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
如果您询问实际如何计算哈希值,即您将哪些输入提供给 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
- 2 回答
- 0 关注
- 247 浏览
添加回答
举报
0/150
提交
取消