- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据加密算法MD5
学 年 论 文
时 间2011.1.10~2011.1.14
专 业 通 信
班 级 08级2 班
学 号 200827169
姓 名 黄德超
数据加密算法MD5
摘 要
随着网络技术的迅速发展,信息加密技术已成为保障网络安全的一种重要手段,加密算法已经成为人们的一个研究热点。本文对MD5算法进行了深入研究,介绍MD5算法的产生背景、应用及其算法流程,并提出了MD5算法的一个改进方案。
1绪论
随着通信和网络技术的发展和广泛的应用,信息安全问题日益突出。有些信息极其重要,在一定时间内必须严加保密,严格限制其被利用的范围,数据加密也就成为信息安全的核心,密码学理论因此也得到快速的发展。数据安全是指对于信息或信息系统的安全保障,以防止其在未经授权情况下的使用、泄露或破坏,基本要点是机密性、可用性和完整性。MD5的全称是Message Digest 5(信息摘要算法版本5),20世纪90年代初由MIT Laboratory for ComputerScience和RSA Data Security Inc的Ronald L.Rivest开发出来[1]。它是将一段任意长度报文,即数据文件,文本文件或者二进制文件,通过一系列算法压缩成一段128位的信息摘要,例如本文的MD5信息摘要是Ocb275b9cof726a831d895e269332461。MD5算法的本质是一种哈希函数,并且具有不可逆的特性,即无法通过信息摘要来恢复原始的文件,利用MD5技术来存储账号的安全信息而不是直接存储可以保证即便黑客入侵系统得到高权限账号信息也无法破解密码。
2 MD5数据加密算法
2.1 MD5算法
从Rivestl989年开发出MD2算法开始就揭开了人们对加密算法的新一轮研究,进而加强算法的安全性,满足信息发展对网络安全的要求提出了趋近成熟的MD5算法。
MD(Message Digests)是一种单向散列函数,它以变长的信息为输入,把其压缩成一个定长的值输出。这一输m可以被看作是原输入报文的“报文摘要值(Message Digest)”,若输入的信息被改变了,则输出的定长值(摘要)也会改变。由于输入的长度大干输出的长度,因此会有不同的输入产生相同的输出可能。然而对于信息摘录函数而言,要求给定一个输出,去寻找一个输入以产生相同的输出是计算不可行的。MD5是由Ron Rivcst设计的散列函数系列的第5个。它以一种充分复杂的方式将各比特弄乱,每个输出比特都受每一个输入比特的影响。
2.2 MD5算法原理
对任意长度的信息输入,MD5都将产生一个长度为128比特的输出。这一输出可以被看作是原输入报文的“报文摘要值(Message Digest)”。MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits
Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个o,直到满足上面的条件时才停止用0对信息的填充。然后,再在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64一(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
2.3 MD5算法的详细描述
假设有一个b位长度的输入信号,希望产生它的报文摘要,此处b是一个非负整数,b也可能是0,不一定必须是8的整数倍,它可能是任意大的长度。设想信号的比特流如下所示:
m_0,m_1.......m_{b-1}
图1 MD5分组摘要算法
(1)补位。MD5算法是对输入的数据进行补位,使得如果数据位长度LEN对512求余的结果是448,则数据扩展至K×512+448位,即K×64+56个字节,K为整数。补位操作始终要执行,即使数据长度LEN对512求余的结果已经是448。
具体补位操作:补一个1,然后补0至满足上述要求。最少要补一位,最多补512位。补位后报文信息长度如图2所示。
图2补位后信息长度1
补数据长度。用一个64位的数字表示数据的原始长度b,把b用两个32位数表示。那么只取b的低64位。当遇到b大于2^64这种极少遇到的情况时,此时,数据就被填补成长度为512位的倍
文档评论(0)