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