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

Python3与Bash中SHA1哈希输出不一致问题求助

为什么Python的SHA1结果和Bash的echo + sha1sum不一样?

这事儿的核心原因其实很简单:Bash里的echo命令默认会在输出的字符串末尾加一个换行符(\n),而你Python代码里的b"hello"是不带这个换行的!

咱们来拆解细节:

  • 你的Python代码hashlib.sha1(b"hello").hexdigest()计算的是纯字符串hello(无末尾换行)的SHA1值,结果是aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d——这和在线工具一致,因为在线工具默认也是计算原始字符串的哈希。
  • 而Bash里echo "hello"实际输出的内容是hello\n(末尾多了个隐藏的换行符),sha1sum计算的是这个带换行的完整内容的哈希,所以结果变成了f572d396fae9206628714fb2ce00f72e94f2258f。

想要让Bash的结果和Python一致,只需要给echo加-n参数,它会告诉echo不要自动添加末尾的换行符:

echo -n "hello" | sha1sum

执行这个命令,你就会得到和Python完全相同的哈希值了。

反过来验证也成立:如果你在Python里计算带换行的字符串哈希,结果会和Bash默认的输出一致:

import hashlib
hashlib.sha1(b"hello\n").hexdigest()  # 输出 'f572d396fae9206628714fb2ce00f72e94f2258f'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:26