码迷,mamicode.com
首页 > Windows程序 > 详细

C# MD5 32大写位加密 UTF-8编码

时间:2020-02-19 20:59:56      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:put   ++   creat   def   gb2312   odi   选择   加密方式   进制   

string UserMd5(string str)
        {
            string cl = str;
            string pwd = "";
            MD5 md5 = MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("X");
            }
            return pwd;
        }

最开始我使用上面的进行加密,后来只要出现中文我就发现经常性的会少一位数或者少几位数,经过检查发现Encoding.Default使用的是默认的编码:gb2312 所以改变加密方式:

string UserMd5(string str)
        {
            string cl = str;
            string pwd = "";
            MD5 md5 = MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("X2");
            }
            return pwd;
        }

X代表取消最开始的0  X2代表不省略开始的0     eg: 0D12   ==X==》D12          0D12   ==X2==》0D12

C# MD5 32大写位加密 UTF-8编码

标签:put   ++   creat   def   gb2312   odi   选择   加密方式   进制   

原文地址:https://www.cnblogs.com/-zrj/p/12332685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!