我正在创建一个登录到网站的python脚本(在这种情况下,它是更新Tunnelbroker.net的IPv4端点的URL),它使用哈希的用户名和密码。
我的问题是这个。如果我使用echo mypassword | md5sum它给我一个不同于我发现的python脚本的哈希(使用hashlib和hashdigest来完成任务)。
例如,如果“mypass”是机器人,则回声机器人| md5sum给了我2cf61812c352ec4fd0dae8f52874701d,但如果我通过python脚本运行它,我得到27f5e15b6af3223f1176293cd015771d
我的问题很简单:网站是否可以解密其中任何一个并获得“机器人”?我问这个,因为我想要包含一个python脚本的变体来散列密码(如果最终用户在Windows或其他无法生成MD5哈希的操作系统上)。
提前致谢,祝你有个美好的一天:) 帕特里克。
答案 0 :(得分:4)
md5
和同一个句子中的密码让我感到寒意.. md5
是一种单向散列函数,这意味着应该无法{ {3}}曾经哈希过。 不是加密功能。但是,对于"decrypt"(可能还有rainbow table),您可以从md5
哈希中恢复一些常见字符串,这样就可以使用{{1}加密密码甚至更糟。
但无论如何,这是答案:
不,Python脚本的答案是正确的。如果您使用md5
,则会看到它们是相同的:echo -n "robots" | md5sum
原因是27f5e15b6af3223f1176293cd015771d
会在它回显的字符串末尾添加换行符(惊喜!),添加echo
将不会打印换行符,从而为您提供正确的结果。< / p>
或者,您只需使用-n
或md5sum -s "robots"
即可生成哈希,而无需使用md5 -s "robots"
。
echo
的参考:
echo实用程序写入任何指定的操作数,分隔 单个空格(
echo
)个字符,后跟换行符(' '
)字符, 到标准输出。
答案 1 :(得分:1)
字符串“robots \ n”的MD5是2cf61812c352ec4fd0dae8f52874701d
字符串“机器人”的MD5是27f5e15b6af3223f1176293cd015771d
md5sum robots
给你什么?