日期:2011-05-02 15:21:00 来源:本站整理
利用MD5加密数据库中的用户密码(一)[MSSQL防范]
本文“利用MD5加密数据库中的用户密码(一)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
我们知道,目前网络上普通的网站,略微完善一点的,常常都需求用户先注册,供应诸如电子邮件、账号、密码等信息今后,成为网站栏目的注册用户,才可以享用网站一些特别栏目供应的信息大概服务,比方免费电子邮件、论坛、聊天等,都需求用户注册.而关于电子商务网站,比方igo5等大型电子商务网站,用户需求购置商品,就一定需求具体而精确的注册,而这些信息,常常是用户很隐秘的信息,比方电话、电子邮件、地址等,所以,注册信息关于用户和网站都是很重要的资源,不能随便泄露,越发不能存在安全上的隐患.
假如我们也计划一个需求用户注册的网站,按照目前的常用技术实现办法,可以在数据库中成立一个用于存放用户信息的表,这个表中至少包含用户账号字段:UserAccount和用户密码字段:Password,当然,实际利用中一个用户信息表不大概就只有这些信息,常常按照网站服务要求,会得当增添一些其他的信息,以便利网站供应越发完善的服务.普通的,一个用户信息占用这个用户信息表的一行也就是一个数据记录,当用户登录大概提交资料的时刻,程序将用户填写的信息与表中的信息对比,假如用户账号和密码都精确无误,那么阐明这个用户是合理用户,通过注册;反之,则是不法用户,不准通过.
但是,是不是这样就安全了了?是不是这样就可以满意网站的注册要求了呢?细心想想,我们普通将用户资料直接保存在数据库中,并没有举行任何的保密办法,关于一些文件型数据库比方Access等,假若有人得到这个文件,岂不是全部的资料都泄露无疑?越发重要的是,假如一个不负责任的网管,不需求任何技术手段,便可以查看网站中的任何资料,假如我们的用户信息在数据库中没有加密,关于网管而言,查看这些信息是太简单了.所以,为了增添安全性,我们有必要对数据库中的资料举行加密,这样,即便有人得到了整个数据库,假如没有解密算法,也一样不能查看到数据库中的用户信息.但是,在考虑数据库能否安全之前,我们有必要对我们的数据能否真的那么重要举行考虑,假如数据只是简单的一些文件资料,没有保密的必要,明显,没有必要对这些数据举行加密而浪费系统资源、加重程序负担,假如这些数据具有一定的隐私性,当然就有必要举行加密.所以,在考虑加密从前,我们可以对需求加密的数据做得当的挑选,免得浪费系统资源.
MD5加密算法简单介绍
在现阶段,我们普通认为存在两种加密方法,单向加密和双向加密.双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需求的时刻,可以利用一定的算法将这些加密今后的密文解密为本来可以理解的明文.双向加密合适于隐秘通讯,比方,我们在网上购物的时刻,需求向网站提交信誉卡密码,我们当然不但愿我们的数据直接在网上明文传送,因为这样极大概被别的用户"偷听",我们但愿我们的信誉卡密码是通过加密今后,再在网络传送,这样,网站承遭到我们的数据今后,通过解密算法便可以得到精确的信誉卡账号.
单向加密刚好相反,只能对数据举行加密,也就是说,没有办法对加密今后的数据举行解密.大概我们当即就会想,这样的加密有什么用处?不能解密的加密算法有什么作用呢?在实际中的一个利用就是数据库中的用户信息加密,当用户成立一个新的账号大概密码,他的信息不是直接保存到数据库,而是经过一次加密今后再保存,这样,即便这些信息被泄露,也不能当即理解这些信息的真正含义.
MD5就是采取单向加密的加密算法,关于MD5而言,有两个特点是很重要的,第一是肆意两段明文数据,加密今后的密文不能是相同的;第二是肆意一段明文数据,经过加密今后,后来果必须永久是不变的.前者的意思是不大概有肆意两段明文加密今后得到相同的密文,后者的意思是假如我们加密特定的数据,得到的密文一定是相同的.
MD5CyptoServiceProvider类是.NET中System.Security.Cryptography名字空间的一个类,供应专门用于MD5单向数据加密的办理办法,也是本文中我们用来加密数据库中密码的类.在真正举行数据加密之前,我们首先来理解MD5CyptoServiceProvider类中的主要办法:ComputeHash,它将输入的明文数据数组利用MD5加密今后输出加密后的密文数据数组.目前,我们就来看一个具体的实例:
'要加密的明文字符串
Dim strPlainText as String = "Encrypt me!"
'用于存放明文字符串的数组
Dim hashedDataBytes as Byte()
Dim encoder as New UTF8Encoding()
'成立MD5CryptoService实例
Dim md5Hasher as New MD5CryptoServiceProvider()
'加密运算
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPlainText))
看完以上的具体实例今后,我们知道,ComputeHash办法只能承受数组作为加密对象,输出的密文也是数组,因此,在对字符串加密之前,我们必须首先将这些字符串转化为数组,这就要用到UTF8Encoding类的GetBytes办法,将字符串转化为数组,而加密今后的后果也是利用数组输出.
以上我们大致理解了MD5的具体加密实现办法,下面,我们结合数据库来看看MD5的实际利用.
利用MD5存储密码
在前面的介绍中,我们提到网站常常将用户的账号、密码等信息利用非加密的方法保存到数据库,比方账号利用范例为VarChar的UserCount字段,一样,密码也是采取范例为VarChar的Password字段.但是,假如我们打算采取MD5加密方法存储密码信息,就必须改变密码字段PassWord的范例为16为二进制方法,这个其实我们也不难理解,因为在前面的介绍中,我们知道加密今后的输出,是利用二进制数组的,所以,这里必须做呼应的改变.
当用户注册成功,正式成立一个账号的时刻,数据库中就必须为这个用户增添一条记录.以下的程序代码实现了成立一个账号的功效,在页面中,程序要求用户输入账号、密码等信息,然后,将这些信息作为账号信息存入名为UserCount的数据表,在这个表中,用户密码是利用MD5加密保存的.下面就是实现以上页面的具体代码:
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论