有时候,你设计的用户可能有一个密码属性,如果直接保存密码字符再数据库似乎不合适,我们可以将字符串转为哈希保存:
public static string Hash(string input)
{
using (MD5 md5Hash = MD5.Create())
{
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
}
代码首相将输入的密码转化为字节码,也就是标准的ASCII码,以密码”123456“为例,得到的就是:[49 50 51 52 53 54],
然后调用MD5,对字节码进行加密,得到一个16字节的byte数组。(MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。)
最后调用Tostring("X2")将密码以16进制2位的宽度保存。所以最后得到的会是一个长度为32的字符串。
无论密码长度是对少,因为MD5的算法,都会转为这个长度。上面是一个string的扩展方法,很容易使用。一般非商业化的密码加密,上面是可以满足需求的。