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)产生碰撞,降低了整体全部链表的碰撞几率。

posted @   影随风动91  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示