在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