为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
哈士奇WWW 2022-12-13 16:12:23
我查看了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=


查看完整回答
反对 回复 2022-12-13
?
翻翻过去那场雪

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


查看完整回答
反对 回复 2022-12-13
  • 2 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信