很早就听说过A*算法,据说在寻路径时,是一种比较高效的算法。但是一直没有搞清楚原理。 这段时间刚好有个营救公主的例子: 题描述 : 公主被魔王抓走了 , 王子需要拯救出美丽的公主 。 他进
顺晟科技
2021-06-16 10:46:52
215
MD5的全称是消息摘要算法5,由罗纳德L李维斯特在20世纪90年代初开发,由MD2、MD3和MD4发展而来。
1MD5简介
MD5是一种哈希算法。哈希算法的目的不是加密明文让别人看不懂,而是通过比较信息摘要来防止原文被篡改。一般来说,对于哈希算法来说,所谓的“破解”就是找到碰撞点。
MD5将任意长度的字节串加密成固定长度的大整数(通常为16位或32位)。在加密的过程中,需要过滤掉原文的一些数据信息,无法通过对加密结果的逆运算得到原文。
2MD5的应用
关于MD5的应用,举个具体例子。比如你在论坛注册一个账号,密码设置为“秋雨21”。MD5运算后,该密码变为“287 f1 e 255d 930496 ee 01037339 CD 978d”。当您点击“提交”按钮提交时,您的真实密码“丘雨21”不会记录在服务器的数据库中,但会记录该MD5的操作结果。然后,你用密码“秋雨21”登录这个论坛,电脑再次执行MD5运算,将“秋雨21”转换成“287 f1 e 255d 930496 ee 01037339 CD 978d”,然后传输到服务器。此时,服务器会将您发送的MD5操作结果与您在数据库中注册时的MD5操作结果进行比较。如果相同,则登录成功。
也就是说,服务器只比较MD5运算结果。你可能会问,服务器为什么不直接查你的密码“秋雨21”?因为如果你的真实密码存储在服务器的数据库里,只要黑客破解了服务器的数据库,他就会得到所有人的密码,他可以用里面的任何密码登录。但是,如果数据库中的密码都是MD5格式的,那么即使黑客得到了数字“287 f1 e 255d 930496 ee 01037339 CD 978d”,他也无法以密码登录。
3MD5开裂
现在来说说MD5破解。假设你是一个攻击者,并且有一串数字“287 f1 e 255d 930496 ee 01037339 CD 978d”,那么你怎么知道我的密码是“秋雨21”?因为MD5算法是不可逆的,所以只能用蛮力(穷举法)破解,即列出所有可能的字母和数字的排列组合,然后逐一进行MD5运算,验证运算结果是否为“287 f1 e 255d 930496 ee 01037339 CD 978d”,密码“秋雨21”是7个英文字符和数字的混合,所以排列组合的数量是一个天文数字。因此,使用黑客词典是一种有效可行的方法,它可以根据一定的规则自动生成。比如密码“秋雨21”就是常见的组合。规则是拼音大约有400个拼音数字,数字按100位数字计算。这个规则大约有400*400*100=16,000,000种可能性。用优化后的算法估计1秒就能破解。即使考虑到开头或所有字母大写的习惯,也只需要10秒左右。如果你在破解你熟悉的人的密码,可以根据你对他的理解缩小字典的范围,这样破解起来更快。这个破解方法很大程度上取决于你的运气。
4MD5碰撞
最后说说MD5的冲突。根据密码学的定义,如果不同内容的明文通过哈希算法(密码学称之为信息摘要)得到的结果是一样的,那就叫“碰撞”。因为MD5值可以用任意长度的字符来计算,所以一篇文章或一个软件的所有字节都可以通过MD5运算得到一个数值。如果文章或软件的数据发生变化,计算出的MD5值也会发生变化。这种方法通常用于数字签名验证。因为明文的长度可以比MD5值长,所以可能有多个明文具有相同的MD5值。如果找到两个MD5值相同的明文,就会发现MD5的“冲突”。
哈希算法中有两种冲突,强无冲突和弱无冲突。或者以前面的密码为例:如果你知道“287 f1 e 255d 930496 ee 01037339 CD 978d”的MD5值,然后找到一个恰好能计算出与“秋雨21”相同MD5值的单词,那么你就会发现MD5的“弱无冲突”,这实际上意味着你已经破解了MD5。如果没有给你指定的MD5值,显然更容易找到任意两个MD5值相同的明文,也就是“强无冲突”,但是对于一个好的哈希算法来说并不容易。
值得一提的是,强无碰撞已经被国内老师王小云解决了。她的算法可以在短时间内找到碰撞点,引起世界轰动。现在计算机可以在大约一两个小时内找到一对碰撞。不幸的是,寻找强无冲突在实际破解中没有实际用途,所以MD5现在仍然非常安全
28
2021-08
28
2021-08
28
2021-08
28
2021-08
28
2021-08
28
2021-08