终端sha512哈希计算结果错误,正确哈希值已提供
解决echo管道计算SHA-512哈希值错误的问题
我一眼就看出问题出在哪了——你用echo "zyc.txt"传递字符串的时候,echo默认会在输出末尾追加一个换行符。也就是说,你实际计算哈希的对象是zyc.txt\n(带换行的字符串),而不是你想要的纯zyc.txt字符串,这才导致结果和正确哈希不符。
验证问题根源
你可以用下面的命令查看echo输出的实际内容,直观看到多余的换行符:
echo "zyc.txt" | hexdump -C
输出里会明显看到末尾的0a(ASCII换行符),这就是干扰哈希计算的元凶。
正确的命令写法
要让echo不添加换行符,只需要加上-n参数,这样传递的就是纯目标字符串了:
- 使用
openssl dgst的正确命令:
echo -n "zyc.txt" | openssl dgst -sha512
- 使用
sha512sum的正确命令:
echo -n "zyc.txt" | sha512sum
额外提示
如果你的真实需求是计算文件zyc.txt的哈希值,别用echo管道这种绕弯子的方式,直接让工具读取文件更准确可靠:
# 用sha512sum直接计算文件哈希 sha512sum zyc.txt # 用openssl直接计算文件哈希 openssl dgst -sha512 zyc.txt
内容的提问来源于stack exchange,提问作者Jcfunk
相关产品推荐
相关产品推荐

