using System;
using System.Security.Cryptography;
using System.Text;
namespace _099_MD5加密
{
class Program
{
static void Main(string[] args)
{
//密文:
//MD5
//查询结果:
//md5(123, 32) = 202cb962ac59075b964b07152d234b70
// ("x"): 202cb962ac5975b964b7152d234b70
// ("x2") 202cb962ac59075b964b07152d234b70
//md5(123, 16) = ac59075b964b0715
Console.WriteLine("请输入进行MD5加密的字符串:");
string input = Console.ReadLine();
string output = GetMD5(input);
Console.WriteLine(output);
Console.ReadKey();
}
/// <summary>
/// 将字符串进行MD5加密
/// </summary>
/// <param name="str">即将要加密的字符串</param>
/// <returns>返回已经加密好的字符串</returns>
public static string GetMD5(string str)
{
//创建MD5对象,但是MD5是抽象类
MD5 md5 = MD5.Create();
//开始加密 使用ComputeHash()方法
//需要将字符串转化为字节数组
byte[] buffer = Encoding.UTF8.GetBytes(str);
//返回一个加密好的字节数组
byte[] MD5Buffer = md5.ComputeHash(buffer);
//return Encoding.UTF8.GetString(MD5Buffer); 会被按照指定的(编码格式)解析成字符串,需求的是不用解析的
//将字节数组转换成字符串
//字节数组----字符串
//1、将每个数组中的每个元素按照指定的(编码格式)解析成字符串 Encoding.UTF8.GetString(MD5Buffer);
//2、直接将数组ToString() 命名空间
//3、将字节数组中的每个元素ToString()
string strmd5 = "";
for (int i = 0; i < MD5Buffer.Length; i++)
{
strmd5 += MD5Buffer[i].ToString("x2");//将十进制转换成十六进制
}
//这样是10进制,需求的是16进制(3244185981728979115075721453575112,ac59075b964b0715)
return strmd5;
}
}
}