浅析MD5算法的原理

2016-10-14 04:12武佳杰
科学与财富 2016年28期
关键词:加密信息安全

摘 要:随着网络技术的广泛应用,网络信息安全越来越引起人们的重视。目前通常将需要存储的数据进行加密然后再存储,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(计算机应用技术)学术硕士研究生,研究方向:贝叶斯网络。

猜你喜欢
加密信息安全
《信息安全与通信保密》征稿函
信息安全专业人才培养探索与实践
保护信息安全要滴水不漏
高校信息安全防护
加密与解密
一种基于LWE的同态加密方案
保护个人信息安全刻不容缓
认证加密的研究进展
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密