md5算法总结

md5算法是信息摘要算法,而不是无损压缩算法,因此不可能从密文推测出原文。
但由于生成的128 位(16 字节)的散列值是有数量范围,而原文是无限的,因此必然会产生碰撞,也就是俗称的破解:
即两个不同的原文生成了同一个md值。

常用破解法:

  1. 穷举法,耗时较长

  2. 字典法,将原文和md5值存储到哈希表中,查询快但占用空间大

  3. 彩虹链表法
    时间和空间的均衡,将原文经k次H(x)和R(x)连续运算,得到包含原文在内的2K+1个节点的链表,
    取此链表的头尾节点(即原文和最后一次的R(x)运算结果)存储到哈希表,
    在进行碰撞时,将密文进行一次R(x)运算,然后从哈希表中查找此结果,如果有则代表原文可能在对应的那个链表中;
    如果每次则再进行一次H(x)和R(x)运算,继续查找,直到不超过K次能够找到。

    哈希链表法的R(x)同样会产生碰撞,因此优化为彩虹链表法,采用多个不同R(x)函数,如R1(x) R2(x)…
    这样只会同级的R(x)产生碰撞,降低了整体全部链表的碰撞几率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值