代码说明
ρ攻击的目的和生日攻击类似,也是寻求一个基于sm3哈希值的弱碰撞,但是寻找的方式是通过ρ递推表达式来依次尝试。
这里我使用了类似查表攻击似的数据结构,一边存表一边查表(可以使用多线程进一步优化脚本性能),以便可以在较短时间内找到一个前16bit的hash弱碰撞。
如果寻找更长bit的碰撞,寻找时间也会相应变长。
实验结果可见,寻找16bit碰撞中生日攻击所需要的时间少于ρ攻击,但是如果加长碰撞的bit长度,ρ攻击会比生日攻击展现出更好的效率。
运行指导
将源码clone到本地运行main函数即可运行ρ攻击脚本。
软件环境:Visual Studio 2019
硬件环境:PC机
1