MD5加密

简介: 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

原文地址:https://www.cnblogs.com/wangqilong/p/10088355.html