天天看點

C#學習筆記之MD5加密

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace MD5加密
{
    class Program
    {
        static void Main(string[] args)
        {
            // MD5是抽象類,不能建立對象,但是可以用Create()方法模拟建立。
            MD5 md5 = MD5.Create();

            string str = "123";
            byte[] buffer = Encoding.Default.GetBytes(str);
            byte[] md5Buffer = md5.ComputeHash(buffer); // 将位元組數組加密成一個新的位元組數組。

            // 用該方法擷取到的是亂碼
            string strMD5 = Encoding.Default.GetString(md5Buffer);
            // Console.WriteLine(strMD5); 

            // 将位元組數組轉換成字元串有三種方法:
            // 1、将位元組數組中每個元素按照指定的編碼格式解析成字元串;
            // 2、直接調用位元組數組的ToString()方法;
            // 3、将位元組數組中每個元素ToString();

            // MD5加密應該是用第三種方法:
            string strr = null;
            for (int i = 0; i < md5Buffer.Length; i++)
            {
                // 直接用ToString()方法zh得到的是十進制;
                // strr += md5Buffer[i].ToString();     // 3244185981728979115075721453575112
                // ToString("x"):表示轉換成16進制
                // strr += md5Buffer[i].ToString("x");  // 202cb962ac5975b964b7152d234b70
                // x2:表示用兩位數表示16進制。
                strr += md5Buffer[i].ToString("x2");    // 202cb962ac59075b964b07152d234b70
            }
            Console.WriteLine(strr);

            Console.ReadKey();
        }
    }
}
           

繼續閱讀