第12章 哈希算法和mac算法md5(精简).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档