代码说明 生日攻击的目的是寻求一个基于sm3哈希值的弱碰撞,原理是一定长度和hash值结果2^32长度,在2^16密文空间中可以以50%以上的概率找到一个hash碰撞。 这里我使用了类似查表攻击似的数据结构,一边存表一边查表(可以使用多线程进一步优化脚本性能),以便可以在较短时间内找到一个前16bit的hash弱碰撞。 如果寻找更长bit的碰撞,寻找时间也会相应变长。 运行指导 将源码clone到本地运行main函数即可运行生日攻击脚本。 软件环境:Visual Studio 2019 硬件环境:PC机
2022-08-22 18:00:18 8KB sm3 生日攻击 c++ 国密算法
1
数字签名是一种防止信息被篡改的有效手段。其签名往往是基于信息摘要。假设我们有一个安全系统包括了如下几个部分: 1. 对于任意长度的文本产生固定长度( 8bit)的信息摘要, 2. 发送端对此信息摘要用自己的私钥进行加密,并附在要传送消息之后作为签名, 3. 接收端收到消息后,根据发送端公钥解出一个信息摘要,并根据收到原文重新计算出另一个信息摘要,通过对比两个信息摘要是否相同来验证消息是否得到篡改。此安全系统可能遭受生日攻击,即同时制作足够多的只有细微差别的真实文档和伪造文档以寻求哈希碰撞。 运行代码后,会自动创建合同 1、 2 的文件夹,用来放 n 个差别版本文件。每产生 一个新的版本,写入一个新的文本文件,按顺序命名。
2022-07-31 13:53:51 3KB 生日攻击 数字签名 信息安全技术
1