为什么我的命令行哈希与在线 MD5 哈希结果不同?

为什么我的命令行哈希与在线 MD5 哈希结果不同?

Mac OS X 版本 10.5(Leopard)PowerPC,如果我这样做:

回显“你好”| md5
在命令行上,结果是:

b1946ac92492d2347c6235b4d2611184

但是如果我在某个在线 MD5 哈希网站上输入 hello,例如http://md5online.net/,我得到:

5d41402abc4b2a76b9719d911017c592

我做错了什么吗?如果我想随时使用 MD5,如何确保我在命令行上得到的结果与在线 md5 工具一致?

答案1

当您从命令行回显时,md5 会计算 6 个字符的总和 - h、e、l、l、o 加上换行符。您在网站上输入的文本没有换行符。

尝试做

echo -n hello | md5

它会给出你期望的结果。-n 告诉 echo 不要输出换行符。

答案2

您还可以使用 printf 代替 echo,它会自动抑制换行符:

printf hello | md5

甚至:

printf "hello" | md5

答案3

b1946ac92492d2347c6235b4d2611184 是字符串的 md5

hello

5d41402abc4b2a76b9719d911017c592 是

hello

回车+换行

CR+LF 是 Windows 的换行符。

答案4

取决于您如何调用(OSx),bash 和 zsh 默认添加换行符。

echo "123" | md5

ba1f2511fc30423bdbb183fe33f3dd0f


echo "123" | tr -d "\n" | md5        

202cb962ac59075b964b07152d234b70

echo -n "123" | md5           

202cb962ac59075b964b07152d234b70

printf "123" | md5

202cb962ac59075b964b07152d234b70

相关内容