首先声明:哈希hash算法没法破解
一般的hash算法所谓破解有四种层次
1、给定hash(A),能得到A
2、给定hash(A),能得到一个B,使得hash(A)=hash(B)
3、给定A,能得到一个B,使得hash(A)=hash(B)
4、制造碰撞,即生成A,B,使得hash(A)=hash(B)。
三个难度1>>2>3>4
对于hash算法来说,1是不可能实现的。因为hash值是多对一的。
目前最好的结果是山大(现在清华)的王小云教授对md5以及sha1做出来3。更正一下:目前最好的结果是,针对前缀碰撞(chosen-prefix collsion),根据已知的A, B,可以构造出C,D两个值,使得hash(AC)=hash(BD),离完全实现3还有一定距离。
实现了2,现有的基于hash的密码系统不在安全了,也就是说你创建了密码a,我看到了hash后的值,可以找到密码b来代替仍然可以完成认证。
实现了3,基于hash验证文件正确性的方案不适用了,比如bt,比如众多开源网站用hash值来保证下载文件不被篡改。
作者:知乎用户
链接:https://www.zhihu.com/question/435220213/answer/1636509628
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。