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

为什么Bash的sha256sum结果与Erlang的crypto:hash(sha256)结果不一致?

哈希结果不一致的原因说明

核心原因是两个场景计算哈希的原始输入不一致:

  • Bash中默认的echo命令会在输出内容末尾自动追加换行符\n,你执行echo a | sha256sum时,实际参与哈希计算的内容是a\n,而非单独的字符a
  • Erlang代码中传入crypto:hash的输入是纯字符a,没有额外的换行符,所以计算出来的哈希结果自然不同

验证方案1:调整Bash命令匹配Erlang计算结果

给echo增加-n参数,禁止自动追加换行:

echo -n a | sha256sum

输出结果为ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb -,和Erlang转换得到的十六进制结果仅大小写不同,属于同一份哈希的不同表示格式,完全等价。

验证方案2:调整Erlang输入匹配原Bash命令结果

给Erlang的输入内容末尾追加换行符\n:

Bin = crypto:hash(sha256, "a\n").
bin_to_hex:bin_to_hex(Bin).

转换得到的十六进制结果就是你原Bash命令输出的87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7。


补充说明:十六进制结果的大小写差异仅为转换逻辑的输出格式不同,不影响哈希值的正确性,如果需要统一格式,调整bin_to_hex的实现逻辑输出小写字符即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:48:03