djh*_*101 1 hash md5 cryptography
我对密码学知之甚少,但当然在很多场合遇到了神奇的md5()黑盒子.现在,经过一番搜索,我找到了许多问题:"为什么不能颠倒?" 答案是"因为输出是非独特的".鉴于密码(或任何值)是根据哈希值(而不是原始值)进行评估的,因此知道原始密码并不重要,所有您真正需要访问用户帐户的任何输入都将提供该哈希值.所以,我的问题:
为什么不能对md5进行逆向工程以从输出生成输入(任何输入,不一定是原始输入)(毕竟,实际功能是公开可用的)?
示例:如果我有一个带字符串的哈希函数,为每个字符分配一个数字值,然后添加这些值,我可以通过获取输出,分解它并将因子重新组织成一个字符串来轻松地反转该函数(它赢了不是原始字符串,但它会给出相同的哈希值.那么为什么md5不能倒退呢?
这是一种单向公式.在特定字符串上运行MD5或SHA1会产生始终相同的哈希值.无法将函数反转以返回原始字符串.
例如:
15 Mod 4 = 3
即使你知道公式是
x Mod 4
你不能推断x,因为它可能是3,7,11,15等......
显然MD5和SHA1要复杂得多!
在上面的例子中,输入15将总是给你3的答案,但没有人能够推断出原始数字.这确实可以很好地解决多个输入字符串可以提供相同哈希的冲突:
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
维基百科有关于所用特定算法的信息:
http://en.wikipedia.org/wiki/MD5#Algorithm
来源/信用: 为什么MD5/SHA1密码哈希无法解密?