本文摘自漫画戏说:如何破解MD5加密算法TOMORROW星辰
前言
这里所谓的破解并非是要把摘要还原成原文。因为MD5算法是用有穷的128位表示无穷的原文。对于MD5的破解,实际上都属于碰撞,比如原文A可以 通过MD5生成摘要M,我们只要找到生成同样摘要的原文B,此时B就是其中一个破解结果。
MD5破解原理都是利用了,被加密的数据与MD5加密算法所 生成的哈 希值并不是一 一对应的关系,而是多对一,也就是 说不同的数据经过MD5加密算法处理后,可能生成同样的MD5哈希值。通过碰撞寻找可以生成相同的哈希值的数据来实现破解。
此文介绍暴力枚举法、字典法、彩虹表法三种破解MD5加密算法的方法。
暴力枚举法
顾名思义,就是简单粗暴地枚举所有原文,并计算出哈希值,看哪个哈希值和给定的信息摘要一致。方法简单,但时间复杂度极高。仅仅长度只有8位的密码就约有两百亿的排列组合。
字典法
如果说暴力枚举是以时间换空间,那么字典法就是以空间换时间,黑客利用一个巨大的字典存储尽可能多的原文和信息摘要,即可快速找到碰撞结果。但是生成字典也需要巨大的空间。
彩虹表法
H(x)生成信息摘要的哈希函数。如MD5,如SHA256。
R(x)由信息摘要转换成另一个字符串的衰减函数 (Reduction)。其中R(x) 的定义域是H(x) 的值域,R