概念:Hash函数又称为哈希函数、散列函数,是将任意长度的消息输出为定长消息的函数。主要用于构建数据的“指纹”,以此标记数据,广泛应用于数据完整性、数字签名、消息认证等。形式为:

特性:
- 单向性:已知x,求m在计算上是不可行的。
- 抗碰撞性:对于任意给定的消息m,如果找到另一不同消息m`,使得h(m)=h(m`)在计算上是不可行的。
1. MD5算法
MD5算法由MD2、MD3、MD4发展而来,其消息分组长度为512bit,生成128bit的摘要。2004年,王小云教授找到了MD5碰撞,并有专家据此伪造了标准的X.509证书,实现了真实攻击。
2. SHA-1算法
SHA-1算法的输入是长度小于264bit的任意消息,输出160bit的摘要。同样是王小云教授找到了SHA-1算法的碰撞。
算法步骤:
- 填充报文。
- 初始化缓冲:初始化5个32bit的寄存器,具体值如下:
| 寄存器 | 值(左边为有效高位、右边为有效低位) |
|
A |
67 45 23 01 |
|
B |
EF CD AB 89 |
|
C |
98 BA DC FE |
|
D |
10 32 54 76 |
|
E |
C3 D2 E1 F0 |
3. 循环生成摘要,每次循环处理512bit的分组。摘要算法核心是具有4轮操作的压缩函数。每轮操作对A、B、C、D、E中的3个做一次非线性函数运算,然后做移位和加运算。
4. 输出结果。
1408

被折叠的 条评论
为什么被折叠?



