浅析MD5算法的原理

来源 :科学与财富 | 被引量 : 0次 | 上传用户:wpsx236
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:随着网络技术的广泛应用,网络信息安全越来越引起人们的重视。目前通常将需要存储的数据进行加密然后再存储,MD5(Message-Digest algorithm 5)算法是一个不错的选择。MD5算法是一种用于产生数字签名的单项散列算法。它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式。
  关键词:信息安全;MD5;加密;封装
  1引言
  随着网络通信技术和Internet的联系日益增强,出现了一系列与网络安全相关的问题:如对主机的攻击,网络上传输的信息被截取、篡改、重发等,由此,它对网络应用的进一步推广构成了巨大威胁,因此密码体制[1]就在这种背景下应运而生了。存储加密涉及大量文件、资料、新建等文档处理,需要高效,可靠的进行各种信息交换,同时对信息流转的整个过程需要有效的组织和监控。数据加密技术不仅具有保证信息机密性的信息加密功能,而且具有数字签名、秘密分存、系统安全等性能。因而可以保障信息的机密性、完整性和准确性,防止信息被篡改、伪造和假冒[2]。虽然目前已有很多加密技术应用于各个领域,但是存在加密强度、运算量大等缺陷,因而本文提出了一种新的加密机制—MD5加密。
  2理论基础
  2.1单向散列函数
  单向散列函数[4]也称Hash(哈希)函数。它是现代密码学的核心。散列函数一直在计算机科学中使用,散列函数就是把可变的输入长度串转换成固定长度输出值(叫做散列值)的一种函数。而单向散列函数是在一个方向上工作的散列函数,从预映射的值很容易计算出它的散列值,但要使它的散列值等于一个特殊值却很难。散列值越长则安全性越好,MD5算法就是单向散列函数产生128位的散列值,以下即为生成一个长散列值的方法:
  1)运用单向散列函数生成一则消息的散列值。
  2)将该散列值附于消息之后。
  3)产生包含散列值和消息在内的一连串的数值的散列值。
  4)将(1)产生的散列值与(3)产生的散列值组合起来生成一个更大的散列值。
  5)重复1)至3)步若干次。
  2.2MD5算法的基本原理
  MD5算法以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由4个32位分组组成,将它们级联形成一个128位散列值[5]。
  第1步:MD5在原消息中增加填充位,目的是使原消息长度等于一个值,即比512的倍数少64位。填充后,原消息的长度为448位(比512少64),960位(比1024少64位),1472位(比1536少64位)等。
  第2步:增加填充位后,就要计算机消息原长,将其加进填充后的消息末尾。先计算消息长度,不包括填充位(即增加填充位前的长度)。这个消息原长表示为64位值,添加到加进填充后的消息末尾。如果消息长度超过264位(即64位无法表示,因为消息太长),则只用长度的低64位,即等于计算length mod 264。
  第3步:将输入分成512位的块。
  第4步:初始化四个链接变量,分别称为A,B,C,D,它们都是32位的数字,这些链接变量的初始十六进制值如表1所示,低的字节在前面。
  第5步:处理块。这是个循环,对消息中的多个512位块运行。
  第5.1步:将四个链接变量复制到四个变量a,b,c,d中,使a=A,b=B,c=C,d=D。
  这个算法将a,b,c,d组合成128位寄存器(abcd),寄存器(abcd)在实际算法运算中保存中间结果和最终结果,如图1所示。
  第5.2步:将当前512位块分解为16个子块,每个子块为32位,如图2所示。
  第5.3步:主循环有四轮,每一轮的操作都要处理一个块中的16个子块。每一轮的输入如下:(a) 16个子块;(b)变量a,b,c,d;(c)常量t。
  这四轮中的第1步进行不同处理,其他步骤是相同的。每一轮有16个输入子块M[0],M[1],…,M[15],或表示为M[i],其中i为1~15。每个子块为32位。t是个常量数组,包含64个元素,每个元素为32位。我们把数组t的元素表示为t[1],t[2],…,t[64],或t[i],其中i为1~64。由于有四轮,因此每一轮用64个t值中的16个。每一轮输出的中间和最终结果复制到寄存器abcd中:
  1)首先对b, c, d作一次非线性函数运算,这个运算在四轮中不同。
  2)变量a加进第1步的输出(即寄存器abcd)。
  3)消息子块M[i]加进第2步的输出(即寄存器abcd)。
  4)常量t[i]加进第3步输出(即寄存器abcd)。
  5)第4步的输出(即寄存器abcd)循环左移s位。
  6)变量b加进第5步输出(即寄存器abcd)。
  7)第6步的输出成为下一步的新abcd。
  图3和图4显示了MD5操作过程。
  对于每次操作中用到的四个线性函数,即
  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)),其中,&是与,|是或,~是非,^是异或。这些函数中,如果x,y和z的对应位是独立和均匀的,那么结果的每一位也是独立和均匀的,函数F是按逐位方式操作;函数H是逐位奇偶操作。
  3.结论
  MD5是单向加密算法,加密以后信息不可以解密。可以对算法做适当的修改和补充,以更加适合应用需要。同时随着企业信息和数据的巨大膨胀,以及确保数据安全的重要性与日俱增,数据的加密有着不可替代的重要性,但随之而来的问题是效率的降低和数据管理的复杂。高效率、易管理的数据安全方案将是未来的研究方向。
  参考文献
  [1]杨义先,林晓东.信息安全综论[M].北京:电信科学出版社, 1998 .
  [2]杨明,齐望东.密码编码学与网络安全[M].北京:电子工业出版社,1997.
  [3]彭文波.MD5算法原理及应用[EB/OL].中国知网 1999.2.
  [4]桑海,李建宝.加密算法MD5 的研究与应用[EB/OL]. 华南金融电脑 1999.7.
  [5]潘清芳.使用MD5加密数据库系统的设计[J].第3 卷第2 期:77-143.
  [6]郑莉,董渊.C++语言程序设计[M].北京:清华大学出版社,2001.
  [7]施卫锋, 周俊, 朱利刚.多户住处系统中数据安全性控制及其实现[EB/OL].微机发展.
  [8] 段钢著.加密与解密(第二版)[M].北京:电子工业出版社,2003.
  作者简介:武佳杰(1989—),男,山西汾阳人,山西财经大学2014(计算机应用技术)学术硕士研究生,研究方向:贝叶斯网络。
其他文献
该文以黄沙-长寿路70m盾构初始推进为工程背景,就该段地面沉降问题的原因和所采取的对策,及其效果进行描述,着重分析了泥水加压式盾构机在松散软弱的沙层和淤泥地层中掘进隧道的开挖
区域稳定控制是确保现代电力系统安全稳定运行的重要手段。该文探讨了区域稳定控制中的若干关键技术问题,首先把区域型控制按决策方式划为分散决策方式和集中决策方式两类,推荐
把边界元方法应用于三向稳定渗流问题的数值分析。叙述了该问题的基本方法,讨论了法向导数间断的处理方案,探讨了内点趋近边界时,提高精度的方法,引入了子结构偶合法。从实际角度
摘 要:企业中的党建工作是发展中的核心因素,在新形式发展下,要了解供电企业基层党建工作发展的必要性,并利用相关措施对供电企业的基层党建工作积极引导,以实现供电企业的积极进步。  关键词:基层;党建工作;供电企业  随着社会的经济进步,供电企业在一些管理形式上发生了较大变化,在新时期的基层发展中,供电企业的党建工作面对一些新的挑战,因此,在本文中,研究了基层党建工作对供电企业发展产生的影响,并利用相
期刊
摘 要:随着现代科学技术的发展,机器人技术越来越受到广泛关注,在工业生产日益现代化的今天,机器人的使用变得越来越普及。因此,对于机器人技术的研究也变得越来越迫切,尤其是工业机器人方面。课题针对这一领域,设计了一个用于扳魔方的机械手,该机械手拥有两个自由度,可以实现对魔方的夹取,还可以实现对魔方的每一个面进行旋转。  关键词:移动焊接机器;轨迹规划;梯度下降法;二分法  0 引言  以工业化机器人及
期刊
摘 要:道路桥梁工程投资主要分为公路工程与市政工程两个组成部分,且从公路桥梁计价办法中估算、概预算定额等角度来看,主要遵从《公路工程基本建设项目概算预算编制办法》(JTG B06-2007)。而国外在公路桥梁计价过程中,采用了总承包模式下计价方法,即遵从“设计工作、施工管理、采购一体化”原则,展开计价环节,并优化当前道路设计,达到最佳的公路桥梁建设状态。本文从传统计价模式下道路设计应用分析入手,并
期刊