论文部分内容阅读
[摘 要] 本文介绍MD5加密算法的基本原理,举例说明该算法在用ASP和ASP.NET开发WEB应用程序时安全保护数据库中用户密码这一重要数据的方法。
[关键词] MD5 加密 密文
一、引言
随着高校数学化校园的建设,学校及校内各部门都建立了自己的网站和管理系统。信息数据的安全越来越受到人们的关注。在学校信息管理系统中,经常需要将用户权限信息存储于数据库,当不同的用户登录时,根据数据库中的信息进行相关验证,但数据库中的信息也受到各方面因素的影响而使安全性受到威胁,因此如何保证数据库的安全变得越来越重要。为了增强安全性,我们有必要对数据库中的重要资料进行加密,这样既使攻击者得到了加密的用户信息,如果没有解密算法,也一样不能获得用户的真实信息。现在网站一般采用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是单向加密算法,没有谁能够算出它是123经过MD5加密来的。当合法用户通过登录页面输入123,程序再进行MD5加密,把加密后的数字ac59075b964b0715跟数据库中保存的进行比较,这显然是相等的,所以就通过验证,如果用户忘记了密码是123,那谁也无法由ac59075b964b0715得出这个密码。
五、NET中MD5加密算法的实现
系统只需在用户注册或密码修改时将密码用Hash Password For StoringIn ConfigFile方法进行加密,而在用户登录时用同样的方法将用户输人的密码进行加密后再比较,相同则登录成功,不同则失败。其实现略写如下:
public string md5(string str, int code){
if(code == 16) //16位MD5加密(取32位加密的9~25字符)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
}else //32位加密
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}}
六、结束语
互联网在我国越来越普及,其安全问题越来越突出,网络的安全只是相对而言,真是道高一尺,魔高一丈,网络没有绝对安全。此种基于WEB密码传输只是网络安全措施之一,对于互联网的安全,还有很多工作要做,如怎样防止字典攻击、穷举攻击、窥探攻击、垃圾搜索攻击等等,网络安全工作任重而道远。
参考文献
[1]刘洪涛:MD5加密算法在Web 程序中的应用.科技咨询导报, 2006.8
[2]梁田贵:算法设计与分析[M].冶金工业出版社,2004
[3]Chris Payne著:赵斌等译.ASP.NET从入门到精通[M].人民邮电出版社,2002
[关键词] MD5 加密 密文
一、引言
随着高校数学化校园的建设,学校及校内各部门都建立了自己的网站和管理系统。信息数据的安全越来越受到人们的关注。在学校信息管理系统中,经常需要将用户权限信息存储于数据库,当不同的用户登录时,根据数据库中的信息进行相关验证,但数据库中的信息也受到各方面因素的影响而使安全性受到威胁,因此如何保证数据库的安全变得越来越重要。为了增强安全性,我们有必要对数据库中的重要资料进行加密,这样既使攻击者得到了加密的用户信息,如果没有解密算法,也一样不能获得用户的真实信息。现在网站一般采用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是单向加密算法,没有谁能够算出它是123经过MD5加密来的。当合法用户通过登录页面输入123,程序再进行MD5加密,把加密后的数字ac59075b964b0715跟数据库中保存的进行比较,这显然是相等的,所以就通过验证,如果用户忘记了密码是123,那谁也无法由ac59075b964b0715得出这个密码。
五、NET中MD5加密算法的实现
系统只需在用户注册或密码修改时将密码用Hash Password For StoringIn ConfigFile方法进行加密,而在用户登录时用同样的方法将用户输人的密码进行加密后再比较,相同则登录成功,不同则失败。其实现略写如下:
public string md5(string str, int code){
if(code == 16) //16位MD5加密(取32位加密的9~25字符)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
}else //32位加密
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}}
六、结束语
互联网在我国越来越普及,其安全问题越来越突出,网络的安全只是相对而言,真是道高一尺,魔高一丈,网络没有绝对安全。此种基于WEB密码传输只是网络安全措施之一,对于互联网的安全,还有很多工作要做,如怎样防止字典攻击、穷举攻击、窥探攻击、垃圾搜索攻击等等,网络安全工作任重而道远。
参考文献
[1]刘洪涛:MD5加密算法在Web 程序中的应用.科技咨询导报, 2006.8
[2]梁田贵:算法设计与分析[M].冶金工业出版社,2004
[3]Chris Payne著:赵斌等译.ASP.NET从入门到精通[M].人民邮电出版社,2002