实验3:MD5碰撞试验
本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务:
该实验的基础是:根据相同的前缀,可以生成两个文件,这两个文件的前缀相同,但后面却不同,同时具有相同的哈希值,即产生了哈希碰撞
向上面生成的两个产生哈希碰撞的文件分别追加相同的字符串"task2",然后再计算哈希值,发现哈希值相同,验证了相同哈希的字符加上相同一段字符后,两者的哈希值依然相同
目前验证软件是否正版或者是否被篡改的方法就是校验两个文件的哈希是否相同,如果可以纂改一个软件后哈希值不变,就可以逃过检验
可以将程序分成下面三个部分,prefix生成128字节后,哈希值相同,再加上相同的后缀后依然相同
编写好要用到的程序,程序内容为定义一个长度为200的字符数组,然后通过for循环将该字符数组打印出来
查看文件的二进制形式,发现数组位于0x3020+1处,于是将之前的内容取出作为产生哈希碰撞的前缀
观察产生的前缀文件profix,发现截取正确,于是使用md5collgen产生两个碰撞的文件
因为0x3020不是64的倍数,所以在计算碰撞时会补32个0,计算后缀时要记得减去