MD5加密

2024-09-27

MD5加密(精选4篇)

MD5加密 篇1

一、引言

在信息行业, 安全从未像今天这样重要。安全是一个涉及面很广的问题, 在信息系统的各个环节中都至关重要。因此, 在谈到信息安全时, 可以指多个领域:应用、数据、网络、通信、用户和主机系统等等。在这些领域中, 一项共同的安全需求和目标是对数据的保护, 这进一步突出了安全的重要性, 要求所有企业和组织承担起伦理和法律责任, 采取适当的措施和步骤确保信息安全。在各个层面采取安全措施, 可确保信息可靠的处理、存储或传输, 同时让任何得到授权的实体都能够使用它们。其中, 单向数字签名散列算法更是使数据完整性验证和通过混淆保护数据的机密性成为可能。

二、MD5算法的研究与扩展

2.1 MD5算法的描述

MD5是一种迭代型强加密单向散列函数。单向散列函数指的是根据输入消息 (任何字节串, 如文本字符串、Word文档、JPG文件等) 输出固定长度数值的算法, 输出数值也称为“散列值”或“消息摘要”, 其长度取决于所采用的算法, MD5生成128位的散列值。为了实现对数据的认证的目的, 散列函数应满足以下条件: (1) 函数的输入可以是任意长。 (2) 函数的输出是固定长。 (3) 已知x, 求H (x) 较为容易, 可用硬件或者软件实现。 (4) 已知h, 求使得H (x) =h的x在计算上是不可行的, 这一性质称为函数的单向性, 称H (x) 为单向散列函数。 (5) 已知x, 找出y (y≠x) 使得H (y) =H (x) 在计算上是不可行的。如果单向杂凑函数满足这一性质, 则称其为弱单向杂凑函数。 (6) 找出任意两个不同的输入x、y, 使得H (y) =H (x) 在计算上是不可行的, 则称其为强单向杂凑函数。MD5算法结构采用迭代型杂凑函数的一般结构。其中, CV0=IV=n比特长的初值;CVi=f (CVi-1, Yi-1) 1≤i≤L;H (M) =CVL;CVi-1, 称为链接变量;通常b>n, 称函数f为压缩函数。

2.2 MD5算法的扩展

在数据的加密处理方面, MD5总体看来是安全的, 目前破解MD5主要依靠大型字典的方法, 将常用密码进行MD5后建立数据库, 然后和MD5数值进行对比, 通过这样的方法来破解MD5。为了应对大型字典破译的问题, 提出一种基于MD5算法扩展的加密方法。基于MD5算法的扩展算法流程是, 原始的数据信息首先经过MD5的单向加密得到加密数据, 然后对加密数据再利用双向加密算法加密。得到最终的加密信息由于采用二次加密, 且二次加密算法和对应参数多样和未知性, 如DES、RSA等, 从而使MD5大型字典破解方法完全失效。

三、MD5算法的应用

3.1 Java安全架构与技术

Java平台提供了一种通用的面向对象编程语言和一个标准的运行环境, 可用于开发和实现安全的跨平台应用解决方案。为提供基于Java平台的应用解决方案的端到端安全, Java运行环境和Java语言在格式和结构方面对代码及其执行环境做了严格的限制, 从而提供了全面的安全基础。Java之所以能成为安全可靠的运行环境, 在很大程度上应归功于Java架构基础的固有的安全性, 该架构包括Java虚拟机和Java语言, 其中JVM提供了内置的安全策略、访问控制机制和安全扩展。在J2SE中, JCA为Java平台提供加密服务和算法, 以保护消息的安全。JCA定义了提供者概念及一个用于访问加密服务和实现相关功能的一般API框架。通过标准化API框架和提供者实现, JCA还提供了算法和实现的独立性。MD5消息摘要是单向安全散列函数, 在J2SE中, JCA提供者支持消息摘要算法:消息摘要算法5 (Message Digest 5, MD5) , MD5可生成128位散列值。消息摘要使用引擎类java.security.Message Digest表示, 其形式为字节数组, Message Digest.get Instance创建一个实现了指定算法的消息摘要对象实例, 条件是提供者支持该算法。方法Message Digest.update使用由字节数组指定的数据更新摘要, 而方法Message Digest.digest计算散列值并返回一个字节数组。

3.2 MD5算法扩展的应用

随着信息技术的飞速发展, 拥有着效率高、便捷性强等特性的信息系统被越来越多的企业和个人使用, 信息系统一般都会采取用户名和密码结合的登录方式进行身份验证, 此时用户名和密码及其其他敏感信息会存入数据库中保存, 然而如果服务器和数据库被人攻破, 用户的密码将会暴露, 从而导致很严重的后果。现给出基于MD5扩展算法并采用Java语言编程的核心代码, 此算法已应用于无线局科技服务管理系统, 用于解决用户密码安全问题。

四、结束语

通过对MD5加密算法的研究分析得出, MD5的核心是压缩函数, 也正因如此MD5是一种不可逆的安全性很高的加密算法, 但却收到大字典攻击的威胁, 从而导致强度弱的密码被泄露, 通过在MD5加密算法原有基础上的扩展, 克服了外界的攻击, 增强了加密算法的强壮性, 这种基于MD5扩展的加密算法, 可用于保护数据库敏感信息、身份验证、数据完整性等方面。

摘要:当今世界, 人们在关键业务和行业部门大量的采用计算系统和网络技术, 从而带来了新的威胁和风险, 如未经授权的访问、信息窃取和篡改、病毒传输等。文章针对数据的机密性和完整性提出一种基于MD5单向加密技术的扩展, 并通过对该算法的深入研究, 介绍MD5加密算法的基本原理和实现流程, 并给出此加密算法利用Java语言编程在实际系统的使用方法和使用效果。

关键词:MD5,加密,Java

MD5加密 篇2

由于当今网络技术的快速进步,网络风险随之提升,确保网络安全已是人们重视的方向。从网络出现的时候开始,网络加密和网络破解的争斗始终在持续。本文根据Oracle RDBMS,列举了利用枚举法设立明文以建立MD5反向查询数据库,且根据碰撞攻击与逆向查询,归纳针对MD5算法的各类完善方式。

1 MD5加密基本原理

MD5加密其实是散列,a=A(B),B是明文,a是密文,具备容易解算、单向以及抗碰撞的优势。进行加密阶段,把录入数据以512位实行划分组别,各组分为十六个三十二位组别,通过添加、记载、初始化和4轮反复计算,得到由4个32位组联合的128位散列。

(1)添加数据,添加1个1与n个0,确保录入数据长度针对512位求余为448。其数据长度:

(2)记载数据长度,添加数据后,把之前数据长度运用64位实行储存且在后面填充。即长度:

(3)初始MD缓冲寄存器,4个32位MD5链接变量添加道其余4个中:X到x,Y到y,Z到z,K到k:

(4)进行4轮重复计算,组别数目“N+1”是重复量,主要重复为四轮,各轮重复几乎相同。选择x,y,z,k其中3个进行一次非线性函数计算,得到的结论和余下的变量和一个子组别与一个常量作和。再把取得的结论向左移动一个不定量,与x,y, z,k的一个作和,使用此结论替换四个变量中的一个,最终得到128位散列。

2根据C语言建立MD5反向库

2.1建立明文数据库

网络平台能够针对构成因素的枚举法和排序法建立用户名和密码的初始明文。其中,Oracle RDBMS是当前应用最广的B/S模式构造信息数据库,应对大量信息的时候,安全稳定性相比sql server更优秀,数据库导入工具sqlload.exe性能和sql server中基本呼叫处理更好,能够基于要求将文本信息导进数据库,密码组成之后,遵循ASCⅡ码值针对明文排列顺序,以便之后按照次序运用MD5。

2.2构建反向查询数据库

运用加密MD5,针对排列顺序之后设立的数据库实行加密, 六位明文与三十二位MD5之间构成应对联系,通过排序法基于散列再次排列顺序,六位字母和数字组最后产生的数据库大约有102.4G ,针对查询库的管理水平设定了更高标准,因Oracle RDBMS运用并行网络服务器,把单个查找分为许多小查找,于不同的中央处理器内进行子查找,工作量通常于系统运作之后持续提升,于大规模平台的运用阶段,把数据库添加进系统数据库中,利用操作面,针对明文实行MD5二分查询,确保针对MD5加密逆向查询要求。

3基于MD5算法的安全性改进

MD5属于实行身份认定的算法,安全性不足,能够利用建立散列确保两个不一样的密码应对相同中文名为消息摘要算法第五版,同样能建立逆向数据库,运用MD5查找密码。因此, MD5算法通常无法应用在安全规定严格的Security Socket Layer和电子签章,目前SHA-2为应用最广的散列加密。但因其开放源代码、不收费和破解问题依然没能获得更多运用,对于MD5算法实行合理的安全完善依然很关键。

3.1 MD5应对碰撞攻击

因消息摘要算法第五版加密法实际是散列a=A(B),如果可以得到B1,得到a=A(B1),那么B与B1属于碰撞,碰撞攻击为针对散列的主要攻击方式,想破解算法第五版即找到碰撞阶段,当前,差分法建立MD5碰撞攻击,体现两量间各个位不同, 若要快速找到碰撞,则需选用更好的差分,明确差分通道,通过非线性函数特征掌控差分通道,通过更改消息与碰撞搜寻实现符合消息搜寻,基于消息差分法去的碰撞数据。通常采取如下两点方式:

3.1.1制约差分通道与消息更改

消息摘要算法第五版运算前,针对消息实行预先处置,使初始函数a=A(B),通过预先处置 Φ(B)变a1(B=A(Φ(B)), 预先处置通常为两类方法,其一,消息半径相隔或者存在规律性相隔插进字符,找到消息差分则更难,其二,提升消息堆叠,进行消息划分组别的结尾填充最终的三十二位消息字符,该方式能够确保消息差分法字符串相对于同样长度的零字符串的汉明距离非奇数,损坏消息差分通道与碰撞查找方式。

3.1.2改变MD5初始数值

MD5.asp内,把4个MD缓冲寄存器初始数值稍微更改,形成新消息摘要算法第五版,哪怕仅更改单个数的任何一位,就会极难破解。

3.2对于逆向查询

如果逆向数据库空间足够,电脑处置快速,则能在时限内直观找到MD5数值。利用客户与系统针对消息摘要算法第五版算法进行少量更改或者辅助完善,就可使逆向查询更难。

(1)客户自主完善,客户设定密码过程中,运用英文字母、 阿拉伯数字以及符号实行随机构成,增加设定密码的长度,针对其实行定时更改,以降低遭到字典信息匹配的概率,切实降低遭到破解的可能性。

(2)辅助改善,系统通过阿拉伯数字、英文字母以及符号替客户设定的密码添加特别的前后缀,增加设定的密码长度,避免客户密码较短或太简单。且针对该前后缀定时实行更改或随机形成,纵然遭到破解,仅为增加长度之后的密码,实际密码依然没有危险。通过此类的处置,客户的密码遭到破解的概率则可以切实减少。

(3)多次实行加密,实行单次消息摘要算法第五版加密之后,针对产生的密码所有或者一些再次实行单次或者多次修改, 使其更难在字典中快速查找。比如,md5(md5(ghlksdhal))针对MD5密码的所有实行多次的加密,md5(left(md5(ghlksdhal), 30))是针对MD5密码的左30位实行再次加密。且事实表明, 反复消息摘要算法第五版加密对别的时间功能无影响。

(4)查询库添加盐(salt),通过散列具备雪崩效应的特点, 客户设置密码过程中,产生随机字符,即盐(Salt),储存于另外的信息表或者查询库内,和客户口令彼此联系,之后使用hash函数针对盐(Salt)实行消息摘要算法第五版加密,进而使消息摘要算法第五版加密结论储存进查询库。此举可以很大程度使逆向查询更难,并消除了weak password的情况。

4总结

该分析采用枚举法建立明文库,很大程度提升了密码破解难度,体现了Oracle RDBMS处置大量信息的稳定性与性能优异的特点,确保建立的MD5逆向查询库阶段符合储存大空间、运作成效高以及操作简单的特征,最终以当前运用方面为基础,归纳了各类改进方案,改进了MD5算法的安全性。

参考文献

[1]王雄,朱志祥,许辉辉.MD5加密逆向破解及安全性改进[J].西安文理学院学报:自然科学版.2014.

[2]毛熠,陈娜.MD5算法的研究与改进[J].计算机工程.2012.

MD5加密 篇3

随着网络和计算机技术的飞速发展,远距离信息传输变得越来越简单,从而促使社会各个领域的工作方式呈现多样性。比如在医学领域,远程的专家会诊是近几年发展起来的一项特殊业务。该业务既提高了一些中小城市医疗技术水平更节省了专家会诊的时间成本和交通成本。专家在远程诊断时,病人的病理图片(比如X光片等)对诊断结果起到至关重要的作用,所以对病理图片的要求就非常高,往往需要图片非常精细,同时又必须保证图像在传输过程中的完整性,不能出现哪怕一个像素的差错或者被恶意篡改。另外病理图片涉及到很多的隐私,所以必须对图片进行一定的安全加密。本文就是从这个角度出发,利用当前非常流行的Hash函数——MD5,设计了一种加密算法,它既解决了图像传输过程中的恶意篡改和传输差错问题,同时利用图像位加密技术,将图像本身的MD5值作为加密的周期序列,采用独特的加密方法对图像进行合理有序的加密,从而达到图像安全传输的目的。此算法易实现、运算量小、应用多样、效果好,在实现验证图像完整性功能的同时,解决了图像安全性的问题。

1 Hash函数以及MD5算法

密码学Hash函数能够用于数据完整性和消息认证,其基本思想是把Hash函数值看成输入的消息摘要,当输入中的任何一个二进制位发生变化时都将引起Hash函数值的变化。Hash函数能够接受任意长的消息为输入,并产生固定长的输出,产生的Hash值可以看成是文件、消息和其他数据块的“指纹”,它满足用于消息认证的密码学性质。它具有单向性、抗弱碰撞以及抗强碰撞等特性。因此Hash函数可以用于消息或文件的完整性检验[1,2]。

典型的Hash函数有MD4、MD5以及SHA-1等,尤其是MD5的应用最为广泛。MD5的全称是Message-Digest Algorithm 5(信息—摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。它可以利用一个随机的消息输入(比如一幅数字图像)产生一个128位的信息摘要。不同的文件,则会得到不同的128位信息摘要输出。因此MD5的典型应用是对一段信息产生信息摘要,以防止被篡改[3,4]。

2 基于MD5值的数字图像加密算法

2.1 位加密技术在图像加密中的应用

图像加密就是对图像进行某种变换,使得变换后的图像与原始图像存在颜色、亮度或轮廓等定性或定量的视觉差异。位运算加密图像的思想就是利用某种方法得到一系列的随机或伪随机的以字节为单位的数据,然后把他们和一幅图像的数据逐字节进行特定的位运算,以改变原有图像的数据信息。因为加密之后的图像必须能在接收端被正确地解密,因此,这种位运算必须具有可逆性,本文所采用的位运算是异或运算。位运算加密方法主要有两种,一种是采用流密码加密,另外一种是采用分组密码加密。本文采用的是分组加密方法,该方法利用图像本身得到的128位信息摘要,将明文分成长度为128位的分组,进行异或运算,得到密文。假设A为明文的一个分组,B为信息摘要,C为密文,则C=A XOR B。根据异或运算的特点,将C异或B,就可以得到A,这样就完成了密文解密操作[5,6,7]。

2.2 加密算法和编程实现

2.2.1 加密算法的操作步骤

1) 根据MD5算法计算得到待加密数字图像的MD5值,转换为128位的二进制序列;

2) 利用MATLAB工具读入该数字图片,存储为矩阵;

3) 根据一定的像素分块顺序,以16个像素为分块,与MD5序列进行异或运算,得到一个经过加密处理的矩阵,并存储为加密后的图片;

4) 根据加密效果和应用需要决定是否进行第二次加密,如果需要,则计算第一次加密之后的图片的MD5值,重复步骤2)和3)并且可根据需要,进行第三、第四次加密。如果不需要,结束整个过程。

该算法的流程图如图1所示。

该算法的特点之一就是可以根据图像加密效果的需要进行多次加密,一般情况下四次以内加密完全可以满足实际应用的需求。由于加密序列存在周期性,怎样对图像矩阵B进行分块将会影响最终的加密效果。因此为了提高加密效果,本算法针对每次加密过程采取不同的像素分块顺序。第一次加密采取行像素从左到右,列像素从上到下的顺序,先行后列,如图2(a)所示,第二次加密采取行像素从右到左,列像素从上到下的顺序,先行后列,如图2(b)所示,第三次加密采取行像素从左到右,列像素从下到上,先行后列,如图2(c)所示,第四次加密采取行像素从右到左,列像素从下到上,先行后列,如图2(d)所示。

2.2.2 加密算法编程实现方法和核心编程

本算法采用了在图像处理领域被广泛采用的强大的编程语言MATLAB来进行算法的编程实现和验证。该工具具有强大的矩阵数据分析和处理能力。根据2.2.1介绍的加密算法操作步骤,我们很容易利用MATLAB工具进行编程实现,核心编程以及关键语句注释如下所示:

[m1,m2]=size(Img_A); %Img_A为待加密的图像矩阵

count=1;

For i=m1:-1:1 %m1和m2的循环方式决定了四

For j=m2:-1:1 %种不同的像素块加密顺序

If count==17

count=1;

Img_A(i,j)=bin2dec(num2str([xor…

(bitget(Img_A(i,j),8:-1:1),…

code_seq(8*(count-1)+1:8*count))]));

%code_seq为128位该图像的MD5值

Else

Img_A(i,j)=bin2dec(num2str([xor(bitget…

(Img_A(i,j),8:-1:1),code_seq…

(8*(count-1)+1:8*count))]));

End

count=count+1;

End

End

2.3 解密算法和编程实现

解密算法的操作步骤和加密的操作步骤基本一致,是一个逆向的操作过程,其操作步骤如下:

1) 将得到的加密图像利用MATLAB工具读入,存储为矩阵;

2) 将已知的128位MD5值序列与图像矩阵按已知的像素分块顺序,以16个像素为分块进行异或运算,得到第一次解密后的图像;

3) 计算该解密图像MD5值,判断该图像是否经过篡改,如果是,终止操作,如果不是进入第4个步骤;

4) 根据已知的加密次数,重复1)到3)步骤进行2次、3次、4次解密操作。

该算法的流程图如图3所示。

解密算法的核心编程与加密过程基本一致,在此不再赘述。也正是由于这个特点,使得该算法的优势更加突出。

2.4 算法应用和效果分析

2.4.1 算法应用

以一张腿部X光图片为例,如图4所示,图中可以看出小腿部有明显的骨折现象,假设对该图进行加密,依据本文加密算法,操作步骤如下:

1) 计算图片文件gz.bmp(275×300)的MD5值为fbdcfa1df95e5e701fc395c296e8bb1e,转换成128位二进制序列为:111110111101110011111010000111011111100101011110010111100

111000000011111110000111001010111000010100101101110100010

11101100011110。

2) 读入该图片文件,得到图像矩阵A。

3) 第一次加密,采取图2(a)所示的矩阵分块顺序,以16个像素为单位,与MD5序列进行异或运算,得到图像矩阵B,并存储为图片gz1.bmp,加密效果如图5所示。从中可以看出,图像的大多数细节信息已经被隐藏,但是还能看出图像的大致轮廓。因此,如果我们仅仅是出于隐藏图像细节的角度出发,这种加密已经符合要求。但是,如果我们要完成图像绝大多数信息的隐藏,显然这种效果还不能满足要求,需要进一步的加密。

4) 计算gz1.bmp(275×300)的MD5值为401cebee9d23a1a73d4afa938842ac71,转换成128位二进制序列为:01000000000111001110101111101110100111010010001110100001101001110011110101001010111110101001001110001000010000101010110001110001。

5) 重复2)和3)操作,但是矩阵的分块顺序采用图2(b)示,得到图像C,并存储为图片gz2.bmp,加密效果如图6所示,从中可以看出,加密效果大大改善,图像的绝大多数信息被隐藏,而且由于采取不同的矩阵分块顺序,有效避免序列周期性带来的影响。

6) 同理进行第三次加密,计算gz2.bmp(275×300)的MD5值为735bf4f20fbbba77aa21a5916f59b57,转换成128位二进制序列为:01110011010110111111010011110010000011111011101110111010011101111010101000100001101001011001000101101111010110011011010101110000,改变像素分块顺序如图2(c)所示,得到图像D,并存储为图片gz3.bmp,加密效果如图7所示,从图中可以看出,三次加密之后相比较二次加密的效果提成并不明显,这是由于序列长度受限所致,针对有些图片会出现这种情况。

7) 同理进行最后一次加密,计算gz3.bmp(275×300)的MD5值为d1dcec689c9f11328873 4ec84147e183,转换成128位二进制序列为:11010001110111001110110001101000100111001001111100010001001100101000100001110011010011101100100001000001010001111110000110000011,改变像素分块顺序如图2(d)所示,得到图像E,并存储为图片gz4.bmp,加密效果如图8所示。

2.4.2 算法应用效果分析

分析2.4.1的算法应用效果,可以看到该加密算法能有效地对图像的信息进行加密,虽然一次加密的效果不甚理想,但是能把大多数的细节信息隐藏起来,在某些应用场合,加密一次就足够了。如果要取得更加理想的加密效果,可以选择经过二次、三次、甚至四次加密处理。在四次加密处理之后,可以发现图像的加密效果基本上符合绝大多数场合的需求,它能把原图像的绝大多数信息都隐藏起来。因此,在实际应用过程中可以根据需求选择算法的加密次数,使得该算法的应用更加灵活。另外,解密的过程与加密过程是一个逆向的操作。如果图像在传送过程中出现了哪怕一个像素的修改,即使拥有合法正确的密钥,计算解密出来的图片的MD5值将完全不同。以图8为例,第四次加密之后,图像的第一个像素原值为48,将其随意修改成111,由于仅仅一个像素值的修改,对用户而言看到的图像将不会有差别,然而解密之后计算其MD5值则变成62146a5142fe4e69174d55f0ea62f45c。比较原先解密一次后的MD5值d1dcec689c9f113288734ec84147e183,已经面目全非,由此可以判断接收到的经过加密的图像已经被篡改或者产生了传输误码,是一幅不安全的图像。因此通过此方法,可以有效防止图像传输过程中的篡改或者传输误码造成的影响,保证图像能精确地远距离传输,保证图像传输的正确,可靠和安全。

3 结束语

根据上述分析,该算法采用MD5这一经典的Hash函数算法,利用它所具有的强大数据完整性验证特点,结合图像自身的随机性对图像进行有效的安全加密,相比较其它的图像安全加密算法具有运算量小,应用灵活,特别是该算法既完成了图像加密又实现了验证图像完整性功能。该算法可以适用于绝大多数的应用场合,尤其在医学应用领域,更为突出,它既解决了图像安全性的问题,又能有效防止图像在传输过程中的恶意修改和传输差错,并且多次加密的操作给应用者带来很大的灵活性。实验表明,该算法完全符合实际的应用需求,具有一定的应用价值。由该算法的分析可知,以后完全可以在此基础上采用其它的诸如SHA-1等不同的HASH函数,来进一步改进算法,使得该算法能更加灵活地根据不同的需求,运用到实际的应用场合。

参考文献

[1]王张宜,李波,张焕国.Hash函数的安全性研究[J].计算机工程与应用,2005(12):18-19,197.

[2]苏桂平,刘争春,吕述望.Hash函数在信息安全中随机序列发生器中的应用[J].计算机工程与应用,2005(11):115-116,192.

[3]MD5.http://baike.baidu.com/view/7636.htm.

[4]Xiaoyun Wang,Dengguo Feng,Xuejia Lai,et al.Collisions for HashFunctions MD4,MD5.HAVAL-128 and RIPEMD.

[5]单佳佳,朱灿焰.基于位运算的图象加密技术的研究[J].人工智能及识别技术,2007(9):804-805.

[6]邹建成,齐东旭,熊昌镇.基于面包师变换的数字图象加密[J].北方工业大学学报,2003,15(1):6-10.

MD5加密 篇4

随着高校数学化校园的建设,学校及校内各部门都建立了自己的网站和管理系统。信息数据的安全越来越受到人们的关注。在学校信息管理系统中,经常需要将用户权限信息存储于数据库,当不同的用户登录时,根据数据库中的信息进行相关验证,但数据库中的信息也受到各方面因素的影响而使安全性受到威胁,因此如何保证数据库的安全变得越来越重要。为了增强安全性,我们有必要对数据库中的重要资料进行加密,这样既使攻击者得到了加密的用户信息,如果没有解密算法,也一样不能获得用户的真实信息。现在网站一般采用MD5加密算法对用户的重要信息进行加密。

二、加密方式分类

从大的方面来说,有两类加密方式,即:单向加密和双向加密。双向加密是加密算法中最常用的,它将能直接理解的明文加密为不能理解的密文数据。然后在需要时,可能使用一定的解密算法将加密以后的密文再解密为原来可以理解的明文。双向加密一般适合于隐秘通讯。而单向加密只能对数据进行加密,不能将密文解密。单向加密在实际中的一个应用就是数据库中的用户信息加密,当用户创建一个新的账号或者密码,这些信息不是直接保存在数据库中,而是经过加密以后再保存。这样,既使这些信息被泄露,也不能理解这些信息的真正含义,因为他得到的是一段不能解密的密文。

三、MD5算法简述

MD5加密算法,把任意长度的信息通过加密产生128位信息摘要(或信息指纹),这种加密算法对不同的信息不可能产生同一信息摘要,同时对于给定的信息摘要推断出其相应的信息也是不可能的。MD5属于单向加密的加密算法。MD5加密算法在数字签名、身份认证等方面得到了广泛的应用。

MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度将被扩展至n*512+448,即n*64+56个字节,n为一个正整数。具体补位操作是补一个1,然后补0到满足上述要求。然后,再在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足以上处理中对信息长度的要求。

MD5是一种采用单向加密的不可逆加密算法,MD5算法的应用主要是针对用户的注册登录,用户在注册时所提交的信息(密码)是利用MD5算法加密之后再保存到数据库中,这样可以防止用户密码的泄露,既使是黑客非法获得加密密文也没有办法查看到用户的密码,有效地保护了系统的安全。在用户进行登录时,为了身份验证,必须对输入的密码重新进行MD5加密,然后再与数据库中的信息进行比对,相同便可进入系统。

四、ASP中MD5加密算法的实现

在ASP程序设计中实现MD5加密是很简单的,首先需要下载一个MD5.ASP源文件,网上有很多。把MD5.ASP源文件放在网站目录,在需要加密的页面最上面引入,这样就可以在页面中使用MD5这个函数进行加MD5加密算法。

比如用户注册页面提交了表单,加密页面要把它存入数据库,不加密的时候直接使用password=Request(“password”),然后把变量password利用SQL语句存入数据库。如果利用MD5加密,只需要在这一句后面加上password=md5(Request(“password”)),我们可以把经过加密的数据放入password这个变量中,再把它利用SQL语句存入数据库。比如123经过MD5加密后会变成ac59075b964b0715,由于MD5是单向加密算法,没有谁能够算出它是12 3经过MD5加密来的。当合法用户通过登录页面输入123,程序再进行MD5加密,把加密后的数字ac59075b964b0715跟数据库中保存的进行比较,这显然是相等的,所以就通过验证,如果用户忘记了密码是123,那谁也无法由ac59075b964b0715得出这个密码。

五、NET中MD5加密算法的实现

系统只需在用户注册或密码修改时将密码用Hash Password For Storing In Config File方法进行加密,而在用户登录时用同样的方法将用户输人的密码进行加密后再比较,相同则登录成功,不同则失败。其实现略写如下:

六、结束语

互联网在我国越来越普及,其安全问题越来越突出,网络的安全只是相对而言,真是道高一尺,魔高一丈,网络没有绝对安全。此种基于WEB密码传输只是网络安全措施之一,对于互联网的安全,还有很多工作要做,如怎样防止字典攻击、穷举攻击、窥探攻击、垃圾搜索攻击等等,网络安全工作任重而道远。

参考文献

[1]刘洪涛:MD5加密算法在Web 程序中的应用.科技咨询导报,2006.8

[2]梁田贵:算法设计与分析[M].冶金工业出版社,2004

上一篇:产学一体、工学结合下一篇:自然语言处理技术