zoukankan      html  css  js  c++  java
  • C# 标准的MD5加密32位

    标准的MD5加密32位小写的:

        public static string GetMD5(string myString)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                //byte[] fromData = System.Text.Encoding.Unicode.GetBytes(myString);
                byte[] fromData = System.Text.Encoding.UTF8.GetBytes(myString);//
                byte[] targetData = md5.ComputeHash(fromData);
                string byte2String = null;
    
                for (int i = 0; i < targetData.Length; i++)
                {
                    byte2String += targetData[i].ToString("x");
                }
    
                return byte2String;
            }

     如果用上面这个标准的会有一个问题,就是丢失位数,所以字节转换成字符串的时候要保证是2位宽度啊,某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。不仅是0,1~9也一样。

    用以下代码就可以避免:

      public static string GetMD5(string myString)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                //byte[] fromData = System.Text.Encoding.Unicode.GetBytes(myString);
                byte[] fromData = System.Text.Encoding.UTF8.GetBytes(myString);//
                byte[] targetData = md5.ComputeHash(fromData);
                string byte2String = null;
    
                for (int i = 0; i < targetData.Length; i++)
                {
                    //这个是很常见的错误,你字节转换成字符串的时候要保证是2位宽度啊,某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。不仅是0,1~9也一样。
                    //byte2String += targetData[i].ToString("x");//这个会丢失
                    byte2String = byte2String+ targetData[i].ToString("x2");
                }
    
                return byte2String;
            }
  • 相关阅读:
    MySQL/MariaDB数据库的多表查询操作
    Mariadb/MySQL多实例实战
    Mariadb/MySQL生产环境的my.cnf配置示例
    Mariadb/MySQL数据库单表查询基本操作及DML语句
    Mariadb/MySQL安装方式实战篇
    MySQL数据库扫盲篇
    数据库分类及基础概念
    Docker的系统资源限制及验正
    Docker Private Registry 常用组件
    Dockerfile详解
  • 原文地址:https://www.cnblogs.com/aijiao/p/10240366.html
Copyright © 2011-2022 走看看