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

Linux下如何计算字符串的32字节SHA256哈希值?

Linux下计算字符串的32字节SHA256哈希(与openssl文件计算结果一致)

要得到和openssl dgst -sha256 str.txt完全一致的32字节二进制SHA256哈希,核心是保证输入字符串的字节内容和文件str.txt完全匹配(比如是否包含末尾换行),再通过工具输出二进制结果,以下是两种可行方法:

方法1:直接用openssl生成二进制哈希

如果你的目标字符串是str,且str.txt中仅包含该字符串(无末尾换行),执行:

printf "str" | openssl dgst -sha256 -binary
  • printf "str":精确输出字符串,避免echo默认添加的换行符(如果str.txt是带换行的,改成printf "str\n"即可)
  • -binary参数:让openssl输出32字节的二进制哈希,而非默认的十六进制字符串
  • 若要保存结果到文件,追加> hash.bin

如果需要验证结果和文件计算一致,可将二进制转成十六进制对比:

# 字符串计算的十六进制结果
printf "str" | openssl dgst -sha256 -binary | xxd -p
# 文件计算的十六进制结果
openssl dgst -sha256 str.txt | awk '{print $2}'

方法2:用sha256sum转二进制哈希

sha256sum默认输出十六进制哈希,通过以下命令将其转为32字节二进制:

printf "str" | sha256sum | cut -d' ' -f1 | xxd -r -p
  • sha256sum:计算字符串的十六进制哈希(输出格式为哈希值 -)
  • cut -d' ' -f1:提取出十六进制哈希字符串
  • xxd -r -p:将十六进制字符串反向解析为二进制字节流,得到32字节结果

同样,若str.txt包含末尾换行,把printf "str"换成printf "str\n"或echo "str"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:20:59