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

pel*_*a72 27 command-line hashing

Mac OS X v10.5 (Leopard) PowerPC 上,如果我这样做:

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

b1946ac92492d2347c6235b4d2611184
Run Code Online (Sandbox Code Playgroud)

但是,如果我在http://md5online.net/等在线 MD5 哈希站点之一中输入 hello ,我会得到:

5d41402abc4b2a76b9719d911017c592
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?如果我想随时随地使用 MD5,我如何确保我在命令行上获得的内容与在线 md5 工具一致?

小智 48

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

尝试做

echo -n hello | md5
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

printf hello | md5
Run Code Online (Sandbox Code Playgroud)

甚至:

printf "hello" | md5
Run Code Online (Sandbox Code Playgroud)