简介: MD5消息摘要算法(Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
应用-安全认证: MD5可以将任意长度的“字节串”映射为一个128bit的大整数,并且是通过该128bit反推原始字符串是困难的,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
实现:
static void Main(string[] args)
{
string str = "123";
string MD5String = GetMd5(str);
Console.WriteLine(MD5String);
Console.ReadKey();
}
/// <summary>
/// 加密方法
/// </summary>
static string GetMd5(string str)
{
//MD5实例化
MD5 md5 = new MD5CryptoServiceProvider();
//字符串转换为字节
byte[] buffer = Encoding.Default.GetBytes(str);
//加密
byte[] bufferMD5 = md5.ComputeHash(buffer);
//转成字符串
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bufferMD5.Length;i++ )
{
sb.Append(bufferMD5[i].ToString("X2"));
}
return sb.ToString();
}
ToString()的X用法:
X 十六进制
X是大写,x是小写
X2 每次都是两位数。比如:0x0A 如果是X,就只会输出0xA;如果是X2,就只会输出0x0A
Bug:
MD5对象实例化可能会存在异常情况,异常信息:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。 解决参考文章:https://blog.csdn.net/qq_36330228/article/details/83049469
资料:
https://baike.baidu.com/item/MD5/212708?fr=aladdin
https://blog.csdn.net/qq_36330228/article/details/83049469