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

感谢

posted @ 2021-12-17 11:58  哈哈咖咖  阅读(66)  评论(0编辑  收藏  举报