(14)C#ADO.NET 关于MD5加密的登录框
首先来说为什么需要MD5,因为我们在很多网站注册的账号和密码都是一样的,例如我们在新浪、网易、人人上面都用同一个用户名和密码加密。那么如果某一天这三个网站的某个密码泄露了,那么其他另外两个网站的账户也一起泄露了。这是一种很危险的行为。所以为了防止这种行为的发生,我们需要利用MD5加密。
MD5其实就是一个不可逆的哈希函数,可以把我们简单的密码加密成一连串很负责的字符串(基本上是唯一,但不一定唯一)。加密过后,即使某一个网站的密码泄露,那么攻击者也不会知道我们真实的密码是什么。所以也就无从登录我们其他网站门户的账户了。起到了很大的防范作用。
注:你的初始密码越复杂,MD5越难比对,这就是为什么“博客园”注册账号的时候需要我们的密码中必须含有特殊符号的原因了。
首先给出MD5加密函数(不用记):
public static string GetMD5(string sDataIn) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bytValue, bytHash; bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn); bytHash = md5.ComputeHash(bytValue); md5.Clear(); string sTemp = ""; for (int i = 0; i < bytHash.Length; i++) { sTemp += bytHash[i].ToString("X").PadLeft(2, '0'); } return sTemp.ToLower(); }
这上面的函数,传入的是一个普通的字符串,也就是我们的密码,返回值是该字符串加密过后的MD5值。使用起来非常简单。
基于这个MD5方法,我们在注册时候存入的密码也必须是MD5格式的。
然后我们在登录框登陆的时候,也把用户在登录框输入的密码转换成MD5值,从而和数据库中的MD5值进行比较,如果一致,那么就登陆成功,如果不一致就登录失败。
另注:MD5加盐:
这是一种可以提高密码安全性的方法,也就是如果我们怕用户自己输入的密码过于简单,“123”,“123456”这种。很可能会被别人已经做好的MD5常用比对库中立马被比对出来。所以我们可以在用户所输入的密码上加上系统自带的一些特殊字符,在登录的时候也加上这些特殊字符。这样大大加大了比对难度。提高了密码的安全性。
此方法也比较简单,大家都可以试着实现一下。