C# md5加密兼容
问题描述:在一般处理程序加密出来的是A,在控制台加密出来的是B,加密的字符串是一样的,折腾了好久。
原因:byte[] 那转出来的两边不一样。
原本写法:
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(str));
解决:转utf-8 之后再转一下
byte[] bytes = Encoding.UTF8.GetBytes(str);
byte[] data = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes);
/// <summary> /// 32位MD5加密(小写) /// </summary> /// <param name="input">输入字段</param> /// <returns></returns> public static string Encrypt(string str) { MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); //byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(str)); byte[] bytes = Encoding.UTF8.GetBytes(str); byte[] data = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2"));//转化为小写的16进制 } return sBuilder.ToString(); }
引荐:https://blog.csdn.net/blackant2/article/details/1043856
感谢