China CISSP论坛中王小云老师的论文《如何破解md5及其他hash函数》中
liruohan399 说
强hash的定义是:找到m1和 m2(m1!=m2)使h(m1)==h(m2)是计算上不可行的。
弱hash的定义是:对于随机的消息m1,找到另一条消息的m2,使m1!=m2且h(m1)==h(m2)是计算不可行的。
王晓云的算法能比较快的找到md5一对碰撞,所以md5已经不是强hash函数了,不过仍算是个弱hash。
弱hash的缺点是随着时间,安全性越来越低(因为碰撞越来越多),所以对md5的主要应用,完整性和签名防
抵赖,有威胁,现在使用md5还是比较安全,但未来会越来越不安全!!
王晓云发明的方法(bit追踪法)对所有的现在流行的强hash都有很大威胁
dannyforu说:
MD5主要用来形成摘要,对于随机消息,MD5被破解,的确存在安全性问题,但在实际应用中,对于一段数据
,存在着上下文的关联,以及本身数据内在的逻辑性,要想伪造出一个不破坏上下文关联、与原数据逻辑性
相似的数据,又具有相同的哈希值,应该还是困难的。
论文:How to Break MD5 and Other Hash Functions.pdf
看了这篇文之后想起去找找看MD5碰撞算法
于是就找到了这个网站
http://www.win.tue.nl/hashclash/
在其中 Software Downloads一节中
有MD5碰撞生成器的源码和win程序下载...
其中提到后缀碰撞暂时无法提供,因为似乎需要涉及到网格运算(意味着运算量相当庞大么?) 但是我拿了个小txt(补足100汉字)做实验,也是可以的呀
然后下载下来试用
fastcoll_v1.0.0.5.exe" -i 980182b70ac2e59e73f6cbd7d7c7bb4b
得到如下显示
MD5 collision generator v1.5
by Marc Stevens (http://www.win.tue.nl/hashclash/)
Using output filenames: 'msg1.bin' and 'msg2.bin'
Using initial value: 980182b70ac2e59e73f6cbd7d7c7bb4b
Generating first block: ........
Generating second block: S01........
Running time: 5.453 s
桌面就产生了'msg1.bin' 和 'msg2.bin'两个文件
里边的内容是一串2进制数字(用文本打开就是一坨乱码了)
这两个文件的内容的MD5值都是980182b70ac2e59e73f6cbd7d7c7bb4b,
而我是用doyle这个字符得到的980182b70ac2e59e73f6cbd7d7c7bb4b
然后试试 后缀碰撞


桌面上多了StringTemplate_msg1.txt,StringTemplate_msg2.txt两个文件
在保留原文的情况下
在原文最后紧跟了一串乱码,对这连个文件在做MD5运算,
MD5值也是69d23502c5c63ebde37f6bbfb436d512
-----------------------------------------------
到此位置,貌似web登录的密码用md5加密仍然是可行的...碰撞生成器产生的内容,貌似很难放在密码框里用form提交上去啊...
异或运算的一个问题,疑似C#编译器的Bug?
疑惑与发现--关于C#的右自增运算符
翻译成IL后,都会看到其中的dup
作怪的也就是这个dup
貌似是微软有意为之的...因为其实从最开始到现在都没有修改过这玩意儿