为什么`md5sum` 不能提供与 Internet 相同的哈希值?

lin*_*dhe 9 echo hashsum

我想找到字符串“a”的 md5 哈希值,但是运行echo "a" | md5sum给了我另一个哈希值,而不是我搜索互联网时得到的哈希值(例如使用DuckDuckGo我找到的第一个搜索结果)。

跑步echo "a" | md5sum给我“60b725f10c9c85c70d97880dfe8191b3”,但它应该是“0cc175b9c0f1b6a831c399e269772661”。

如果我对“60b725f10c9c85c70d97880dfe8191b3”进行反向哈希查找,我会得到“a”。

lin*_*dhe 16

散列不同的原因是echo在输出字符串的末尾包含一个换行符以使其更美观。这可以通过-n标志(如果您的实现echo支持它)或使用其他程序(如printf)来禁止:

> echo "a" | md5sum   
60b725f10c9c85c70d97880dfe8191b3  -

> echo -n "a" | md5sum
0cc175b9c0f1b6a831c399e269772661  -

> printf "a" | md5sum 
0cc175b9c0f1b6a831c399e269772661  -
Run Code Online (Sandbox Code Playgroud)

  • `echo` 在输出中添加一个换行符以使其成为一个完整的行,而不是让它变得漂亮。 (2认同)