我对密码学知之甚少,但当然在很多场合遇到了神奇的md5()黑盒子.现在,经过一番搜索,我找到了许多问题:"为什么不能颠倒?" 答案是"因为输出是非独特的".鉴于密码(或任何值)是根据哈希值(而不是原始值)进行评估的,因此知道原始密码并不重要,所有您真正需要访问用户帐户的任何输入都将提供该哈希值.所以,我的问题:
为什么不能对md5进行逆向工程以从输出生成输入(任何输入,不一定是原始输入)(毕竟,实际功能是公开可用的)?
示例:如果我有一个带字符串的哈希函数,为每个字符分配一个数字值,然后添加这些值,我可以通过获取输出,分解它并将因子重新组织成一个字符串来轻松地反转该函数(它赢了不是原始字符串,但它会给出相同的哈希值.那么为什么md5不能倒退呢?