You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Go项目时golang.org/x/crypto@v0.31.0出现校验和不匹配错误,求答疑

问题分析与解决

错误原因

  1. 校验和不匹配本质:go.sum文件存储所有依赖包的哈希校验值,Go下载依赖时会对比下载文件哈希与go.sum记录,确保包未被篡改或来源异常。此次报错是因为golang.org/x/crypto@v0.31.0刚发布,存在官方包更新后哈希未同步、镜像源缓存不一致的情况,导致下载包哈希与go.sum已有记录不匹配,触发安全校验拦截。
  2. 删除go.sum后的问题:你删除go.sum后执行降级命令,但未重新生成校验和文件,Go 1.13+默认要求go.sum验证依赖完整性,因此编译时提示缺少该文件。

解决方法

方法一:强制降级到v0.30.0(推荐,适配你对新版本的疑虑)

执行以下步骤:

  • 清理本地缓存的v0.31.0包,避免残留:
    go clean -modcache
    
  • 执行降级命令(必须指定完整模块路径,不能仅写crypto):
    go get golang.org/x/crypto@v0.30.0
    
  • 重新生成go.sum文件,同步所有依赖的校验和:
    go mod tidy
    
  • 再次执行编译:
    go build cmd/myproject/main.go
    

方法二:修复v0.31.0的校验和问题(若想使用新版本)

如果不想降级,可尝试更新校验和:

  • 清理本地缓存:
    go clean -modcache
    
  • 若未删除go.sum,手动删除其中golang.org/x/crypto@v0.31.0的条目;若已删除go.sum,直接执行:
    go mod tidy
    
    该命令会自动拉取正确的包并更新go.sum中的校验和。

go.mod与go.sum核心作用说明

  • go.mod:项目的依赖清单文件,记录项目所需的所有模块及其版本,是Go模块管理的核心配置文件,定义项目的依赖边界。
  • go.sum:依赖的安全校验文件,存储每个依赖包的哈希值,每次下载依赖时,Go会对比下载文件哈希与go.sum记录,确保包未被篡改、来源合法,是防止供应链攻击的重要机制。

内容的提问来源于stack exchange,提问作者Saqib Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:36:06