欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 图书情报

5报文摘要算法的研究与实现_信息加密-论文网

时间:2014-12-31  作者:袁薇

论文摘要:在信息加密中,采用报文摘要的方法不但可以节省加密时间,还可以节省报文传输和存储的开销。在目前提出多种报文摘要中,应用最广的就是MD5。本文针对MD5报文摘要算法进行了深入研究,分析了算法的安全性,通过程序开发对算法进行了实现,总结了MD5加密算法的应用。
论文关键词:信息加密,报文摘要

1.引言

在信息加密中,采用报文摘要的方法不但可以节省加密时间,还可以节省报文传输和存储的开销。目前,提出的多种报文摘要中,应用最广的一种就是MD5加密算法。MD5算法的全称为Message-DigestAlgorithm5(信息-摘要算法),是90年代初由RonRivest设计的一种单向哈希函数,经MD2、MD3和MD4发展而来。其作用是让大容量信息在用数字签名软件签署私人密匙之前被'压缩'成一种保密的格式,即把一个任意长度的字节串变换成一定长的大整数,输入是任意长度的信息,输出是128位消息摘要(Message-Digest),以一种充分复杂的方式将各比特打乱,每个输出比特都受每一个输入比特的影响。

本文针对MD5报文摘要算法进行了深入研究,分析了算法的安全性,通过程序开发对算法进行了实现,并总结了MD5加密算法的应用。

2.算法的描述

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值,见图1MD5加密算法原理。采用MD5报文摘要算法产生报文摘要的全过程包括以下五个步骤:

①填充,使报文长度为512的倍数减64。对明文输入按512bit分组,填充使其成为512bit的整数倍,且最后一组的后64bit先空出。

②附加长度,将填充前的报文长度写入最后的64比特,总长度N=L×512。填充位数为1~512bit,填充数字图样为(100…0),得Y0,Y1,…YL-1。

③初始化MD缓存,4个32bit的寄存器。每轮输出为128bit,可用下述四个32bit字:A,B,C,D表示,其初始存数以十六进制表示为:(A,B,C,D),共128bits,其中:

A=01234567;B=89ABCDEF;C=FEDCBA98;D=76543210

④处理每个报文分组:处理每个报文分组(512bits),算法的核心是4轮循环的压缩函数。其中,Y表示输入的第q组512bit数据,在各轮中参加运算。T[1,2,…64]为64个元素表,分四组参与不同轮的计算。T[i]是232*abs(sine(i))的整数部分,i是弧度。可用32bit二元数表示,T是32bit的随机数源。

⑤输出报文摘要。所有L个512bit的分组处理完之后,第L阶段的输出便是128bit的报文摘要。

图1:MD5报文摘要算法原理

在MD5算法中,首先,需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(BitsLength)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法为:在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充;然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度;经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

MD5主循环有四轮,是四轮运算,各轮逻辑函数不同。每轮又要进行16步迭代运算,四轮共需64步完成。每次操作对A、B、C和D中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量。再将所得结果向右环移一个不定的数,并加上A、B、C或D中之一。最后,用该结果取代A、B、C或D中之一。以下是每次操作中用到的四个非线性函数(每轮一个),如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。F是一个逐位运算的函数。即如果X,那么Y,否则Z。函数H是逐位奇偶操作符。

F(X,Y,Z)=(X&Y)|((~X)&Z);

G(X,Y,Z)=(X&Z)|(Y&(~Z));

H(X,Y,Z)=X^Y^Z;

I(X,Y,Z)=Y^(X|(~Z))(其中,&是与,|是或,~是非,^是异或)

3.算法的实现

根据MD5算法描述,本文通过程序实现,程序中输入要处理的明文,最终输出只显示16进制的MD5值。要设计算法中应用到的子函数FF(),GG(),HH(),II()以及他们所要调用到的F(),G(),H(),I()函数;接下来是四轮循环,每轮16次。执行结果如下:

①将要处理的明文设定为:01234567

程序执行结果为:feeaffffa24b0000fb7c000073f4ffff

②将要处理的明文设定为:abcdefg

程序执行结果为:c1150000659affffbecbffff36430000

③将要处理的明文设定为:11111111

程序执行结果为:152a0000a6deffff121000008a070000

从以上程序的执行结果可以看出,MD5可以把一个任意长度的字节串变换成一定长的大整数,输入是任意长度的信息,输出是128位消息摘要。

查看相关论文专题
加入收藏  打印本文
上一篇论文:以新疆大学图书馆为例探讨高校图书馆人力资源管理创新-论文网
下一篇论文:浅谈高校图书馆如何在读者服务中体现人文关怀-论文网
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关图书情报
    无相关信息
最新图书情报
读者推荐的图书情报