1

我正在创建一个登录网站的 python 脚本(在这种情况下,它是用于更新 Tunnelbroker.net 的 IPv4 端点的 URL),它使用散列的用户名和密码。

我的问题是这个。如果我使用 echo mypassword | md5sum 它给了我一个与我找到的 python 脚本不同的哈希(使用 hashlib 和 hashdigest 来完成任务)。

例如,如果“mypass”是机器人,则回显机器人 | md5sum 给我 2cf61812c352ec4fd0dae8f52874701d 但如果我通过 python 脚本运行它,我会得到 27f5e15b6af3223f1176293cd015771d

我的问题很简单:网站能否解密其中任何一个并获得“机器人”?我问这个,因为我想包含用于散列密码的 python 脚本的变体(以防最终用户在 Windows 或其他无法生成 MD5 散列的操作系统上)。

在此先感谢,祝您有美好的一天:) 帕特里克。

4

2 回答 2

5

md5和同一句话中的密码让我不寒而栗.. md5是一种单向散列函数,这意味着一旦散列就应该没有办法“解密” 。不是加密功能。但是,使用彩虹表(可能还有其他方式),您可以从哈希中恢复一些常见的字符串md5,这使得使用md5加密密码的想法变得更糟。

但无论如何,这是答案:

不,Python 脚本的答案是正确的。如果你使用echo -n "robots" | md5sum你会发现它们是一样的:27f5e15b6af3223f1176293cd015771d

原因是echo会在它回显的字符串末尾附加一个换行符(惊喜!),添加-n不会打印换行符,因此会给你正确的结果。

或者,您可以简单地使用md5sum -s "robots"md5 -s "robots"生成哈希而不使用echo.


参考echo

echo 实用程序将任何指定的操作数(由单个空白 ( ' ') 字符分隔并后跟换行符 ( \n) 字符)写入标准输出。

使用什么密码哈希算法?

于 2012-10-21T06:44:30.180 回答
1

字符串 "robots\n" 的 MD5 为 2cf61812c352ec4fd0dae8f52874701d

字符串 "robots" 的 MD5 是 27f5e15b6af3223f1176293cd015771d

md5sum robots给你什么?

于 2012-10-21T06:44:44.690 回答