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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM