网站大量收购闲置独家精品文档,联系QQ:2885784924

MD5消息摘要算法实现及改进.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MD5消息摘要算法实现及改进

图 1 MD5 消息摘要算法传统运算流程 图 2 改进后的 MD5 算法流程 2012-07-19################2012刘-俊0辉7-19######2#0#12-07-19######## ( 中国工商银行泉州市分行 福建 泉州 362000 ) 【摘 要】: MD5 消息摘要算法通过对一个任意长度的消息进行处理产生一个固定长度的 消息摘要 , 可利用该 消息摘 要 进行数字签名和密码加密。本文在传统算法流程的基础上作了进一步的改进, 提高了该算法的运算效率。 【关键字】: MD5 算法, 消息摘要, 实现与改进 1. MD5 算法简介 MD5 消息摘要算法由麻省理工学院( MIT) 计算机科学实验 室的 R.Rivest 提出, 被互 联 网 电 子 邮 件 保 密 协 议 ( PEM) 指 定 为 消息压缩值算法之一, 用于数字签名前对消息进行安全的压缩; 且为不可逆算法。 2. MD5 算法描述 MD5 算法是以任意长度的消息作为输入, 输出一个长度固 定为 128bit 的消息摘要, 其传统运算流程见图 1。 MD5Operation(M, Context); End; 3.1 参数的定义与初始化 鉴于对 MD5 算法的运算流程做了改进。因此, 有必要先对 运算中所用到的一系列参数进行数据结构的定义和初始化。 3.1.1 定义参数 我们定义一个名为 MD5Content 的数据类型。 MD5Content = Record ChaVar:MD5ChaVar; Len: MD5Len; Buffer: MD5Buffer; End; 其中, MD5ChaVar 为含有 4 个元素的 DWORD 数组, 分别 表示四个链接变量; MD5Len 由 2 个 DWORD 元素组成, 共 64 位, 用于存放消息长度; MD5Buffer 为含有 64 个元素的 BYTE 数 组, 共 512 位, 存放当前待处理的报文分组内容。 3.1.2 初始化参数 MD5ParaReady 函数用于初始化所有的参数, 它包含了传统 流程中附加填充比特、附加消息长度和初始化 MD 缓存区三个 步骤中的部分操作。关键代码如下: Procedure MD5ParaReady(Var Context: MD5Content) Begin With Context do Begin //对链接变量赋值, InitChaVar($efcdab89, $98badcfe, ; //初始化 64 位的消息长度 Len[0] := 0; Len[1] := 0; // 将分组存储区的内容全部清零 ZeroMemory(@Buffer, SizeOf(MD5Buffer)); End; End; 3.2 划分、处理报文分组 MD5Operation 函数主要根据消息长度的不同进行报文分组 的划分和逻辑处理。伪代码如下: MD5Operation(M:String; Context:MD5Content);//M 为初始消息 Begin // ①②两种情况 If Length(M)=64 then Begin PreTreatment(M, Context); HYPERLINK mailto:GroupDisposal(@Context.Buffer  GroupDisposal(@Context.Buffer, Context.ChaVar); End; // ③④两种情况 Else Begin CycleDisposal(M, Context); PreTreatment(M, Context);  HYPERLINK mailto:GroupDisposal(@Context.Buffer GroupDisposal(@Context.Buffer, Context.ChaVar); End; //输出消息摘要 GetMD(); 3. MD5 算法实现及改进 由图 1 可知, 传统的算法运算流程是先对初始消息进行预 处理( 使其长度变为 512bit 的整数倍) , 再进行报文分组的划分 和逻辑处理。而本文对此作了改进, 具体流程如图 2 所示。首先 根据初始消息长度的不同将其分为: ①初始长度≤512bit, 且初 始长 度≤448bit; ②初 始 长 度≤512bit, 且 448bit初 始 长 度≤ 512bit; ③初始长度512bit, 且剩余消息( 初始消息在划分、处理 完所有满足分组条件后的剩余部分) 的长度≤448bit; ④初始长 度512bit, 且 448bit剩余消息长度≤512bit 四种情况。若为① ②初始消息的长度小于

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档