MD5算法
MD5算法是一种散列(hash)算法,又叫:摘要算法,指纹算法。注意它不是一种加密算法,加密算法都对应着解密,MD5是单项的,没有解密算法。MD5算法长度一般是32位的16进制数字符串。
MD5算法的应用
(1)数据库密码明文存储转换为MD5存储。这样系统管理员、黑客也不知道用户的密码是什么,也就避免了用户的其他系统密码被利用的问题。
(2)计算文件的MD5值来检验文件是否有被篡改过。
MD5算法的特点
(1)长度固定
(2)单向性
(3)抗冲突性(不重复)
(4)雪崩效应,只要源发生一点变化,就会对MD5值造成很大的变化
MD5理论上是不可逆的,破解只有通过“碰撞”,通过两个不同的内容生成相同的MD5值,但是这种碰撞概率非常小。
通过.net库来进行MD5计算
(1)创建一个MD5对象,因为MD5继承了IDisposable接口,所以要用using来括起来,或者最后把他关闭。
(2)因为MD5是使用二进制来进行计算编码,所以先把字符串转换为二进制
(3)进行MD5计算
(4)再把计算的结果进行二进制转换为16进制的字符串显示出来
<span style="font-family:Microsoft YaHei;font-size:18px;">StringBuilder sb = new StringBuilder();
//1.创建一个计算MD5值的对象
using (MD5 md5 = MD5.Create())
{
//1.1把字符串转换为byte数组
byte[] bytes = System.Text.Encoding.Default.GetBytes(msg);
//把byte数组转换为字符串
// string msg = Encoding.UTF8.GetString(bytes);
//2.调用该对象的方法进行MD5计算
byte[] md5Byte = md5.ComputeHash(bytes);
//3.把结果以字符串的形式返回
for (int i = 0; i < md5Byte .Length; i++)
{
sb.Append(md5Byte[i].ToString("x2"));
}
}
return sb.ToString();</span>