- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 哈希算法和mac算法md5(精简)
哈希算法和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 for Computer 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=0
unsigned int *puintTemp=uintTemp;
unsigned int uintTempSwap;
uintTempSwap=ByteSwap(uintTemp);
unsigned int *puintTempSwap=uintTempSwap;
一般在PC机上编写程序时,计算机一般使用Intel或其他指令与之兼容的X86体系的CPU,所以都是按照逆序写文件的。而装载Palm的PDA一般使用摩托罗拉的CPU(如龙珠Dargon Ball),这些CPU使用正序存放。进行数据转换时就有字节顺序转换的问题。
MD5算法过程
注:用绝对值符号表示求字符串的长度。
Step 1: Padding M0 M1
|M1| ≡ 448 mod 512
|M1| |M|
– 如果|M0| ≡ 448 mod 512,则|M1| = |M|+512
–Padding内容: 100…0
Step 2: Append 64-bit length 填充前长度,将填充前长度表示为64位的形式。(单位:bits)。
例如:M0=“abc”.|M0|=24bits=0x18,则64位长度为:0x18||0x0
文档评论(0)