天天看点

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

继续阅读