SHA1开发中的常见错误

69 0

SHA1 是一种哈希(散列)算法,把任意长度的数据计算成固定 160 位(20 字节)的摘要,通常写成 40 位十六进制字符串。下面重点说明报错与纠正。

SHA1开发中的常见错误

  • 结果与官方不一致:文件下载不完整或被篡改,也可能比对的是另一种算法
  • 命令行结果与在线工具不同:echo 带了换行,改用 echo -n
  • Java 结果少了前导 0:用 BigInteger 转十六进制时没有补齐,应用 String.format("%040x")
  • NoSuchAlgorithmException:算法名写错,Java 中应为 "SHA-1"

示例

输入:user@example.com

计算结果:63a710569261a24b3766275b7000ce8d7b32e2f7

说明:对 UTF-8 字节计算 SHA1。

工作原理

SHA1 先对输入做填充:在末尾补 1 个“1”位和若干“0”位,再附上原始长度,使总长度是 512 位的整数倍;然后把数据分成 512 位的块,依次送入压缩函数,与内部状态(160 位)进行多轮位运算和模加,最后的状态就是摘要。SHA-1 每块 80 轮。

Go 示例

下面是 Go 中处理SHA1的常用写法:

import "crypto/sha1"
sum := sha1.Sum([]byte("abc"))
fmt.Printf("%x\n", sum)

运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。

本站的SHA哈希计算器工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【SHA1 是多少位?】160 位,即 20 字节,写成十六进制是 40 个字符。

【同一个文本为什么算出的 SHA1 不一样?】通常是输入字节不同:字符集不同、末尾多了换行或空格、全角半角不同。

【SHA1 还安全吗?】已不安全,浏览器和证书机构已停止接受 SHA-1 证书。

文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: SHA1 数码开发

抱歉,评论功能暂时关闭!