文档介绍:哈希算法和MAC算法
教学内容要点:(2课时)
1. 讨论几种常用的HASH算法 4
2. hash函数通用结构 5
3. MD5简介和历史 6
4. 正序与反序: 7
5. MD5算法过程 12
6. MD5总结 29
7. SHA-1算法 29
8. SHA-1算法过程(自学:本科不讲) 31
9. SHA-1小结 36
10. 各种算法的比较小结 37
11. hash函数小结 39
12. Hash算法不足之处:易冒充 40
13. MAC的实现方法之二:HMAC(基于密钥的哈希消息鉴别码) 41
14. HMAC与哈希的比较 41
15. 两类填充 42
16. HMAC的过程 45
17. HMAC特征小结 65
18. 作业 66
19. 实验 66
20. 参考资料: 67
说明:
讨论几种常用的HASH算法
• MD5,SHA系列:SHA-1,RIPEMD-160,HMAC。
MD5 和 SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。
MD4它适用在32位字长的处理器上用高速软件实现,它是基于 32 位操作数的位操作来实现的。其他一些知名的Hash算法还有MD2、N-Hash、HAVAL等等。
hash函数通用结构
•由Merkle于1989年提出散列函数的通用结构,Ron Rivest于1990年设计出一个实现MD4,几乎被所有hash函数使用。
•具体做法:把原始消息M分成一些固定长度的块Yi,最后一块padding并使其包含消息M长度,设定初始值CV0,压缩函数f, CVi=f(CVi-1,Yi-1),最后一个CVi为hash值。
IV =Initial Value 初始值(V:不是Vector向量)
CV = Chaining Value 链接值
Yi = ith input block (第i 个输入数据块)
f = Compression Function (压缩算法)
n = ,length of hash code (散列码的长度)
b =, length of input block(输入块的长度)
MD5简介和历史
MD5的全称是Message-Digest Algorithm 5(消息-摘要算法),在90年代初由MIT Laboratory puter Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。MD2是基于8位机器的,而MD4和MD5却是面向32位的电脑。
历史:
Ron Rivest于1990年提出MD4。
•1992年, 8月向IEFT提交MD5 (RFC 1321) developed by Ron Rivest at MIT。
•在最近数年之前,MD5是最主要的hash算法
正序与反序:
微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分。正序存放:高字节存放在前,低字在后,逆序存放:低字节在前高字节在后。例如,十六进制数为0XA02B,正序存放:A02B,逆序存放:2BA0。摩托罗拉(Motorola)公司的微处理器使用正序存放,英特尔(Intel)公司的微处理器使用逆序。
例子:
//说明反序存储
unsigned char str[]="ABCDEF";
unsigned char *pstr=str;
unsigned int uintTemp=0x01020304;
unsigned int *puintTemp=&uintTemp;
unsigned int uintTempSwap;
uintTempSwap=ByteSwap(uintTemp);
unsigned int *puintTempSwap=&uintTempSwap;