在日常写 Go 的时候,你一定见过 go.sum 这个文件:每次 go getgo mod tidy 之后,它总是自动变长,里面密密麻麻地写着一行行 h1:xxxx 的“奇怪字符串”。很多同学知道它“和安全、完整性有关”,但真正问一句:go.sum 里的这个特殊哈希值到底是怎么算出来的?大多数人其实说不太清楚。

这篇文章,我们就从实战开发者视角,把 go.sum 里的特殊哈希(特别是 h1: 开头的那串值)讲清楚:它是什么、为什么需要它、底层大致怎么算,以及你如何在本地手动验证它。

先看一行典型的 go.sum 内容: