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