1. using System;
    2. using System.Security.Cryptography;
    3. using System.Text;
    4. namespace _099_MD5加密
    5. {
    6. class Program
    7. {
    8. static void Main(string[] args)
    9. {
    10. //密文:
    11. //MD5
    12. //查询结果:
    13. //md5(123, 32) = 202cb962ac59075b964b07152d234b70
    14. // ("x"): 202cb962ac5975b964b7152d234b70
    15. // ("x2") 202cb962ac59075b964b07152d234b70
    16. //md5(123, 16) = ac59075b964b0715
    17. Console.WriteLine("请输入进行MD5加密的字符串:");
    18. string input = Console.ReadLine();
    19. string output = GetMD5(input);
    20. Console.WriteLine(output);
    21. Console.ReadKey();
    22. }
    23. /// <summary>
    24. /// 将字符串进行MD5加密
    25. /// </summary>
    26. /// <param name="str">即将要加密的字符串</param>
    27. /// <returns>返回已经加密好的字符串</returns>
    28. public static string GetMD5(string str)
    29. {
    30. //创建MD5对象,但是MD5是抽象类
    31. MD5 md5 = MD5.Create();
    32. //开始加密 使用ComputeHash()方法
    33. //需要将字符串转化为字节数组
    34. byte[] buffer = Encoding.UTF8.GetBytes(str);
    35. //返回一个加密好的字节数组
    36. byte[] MD5Buffer = md5.ComputeHash(buffer);
    37. //return Encoding.UTF8.GetString(MD5Buffer); 会被按照指定的(编码格式)解析成字符串,需求的是不用解析的
    38. //将字节数组转换成字符串
    39. //字节数组----字符串
    40. //1、将每个数组中的每个元素按照指定的(编码格式)解析成字符串 Encoding.UTF8.GetString(MD5Buffer);
    41. //2、直接将数组ToString() 命名空间
    42. //3、将字节数组中的每个元素ToString()
    43. string strmd5 = "";
    44. for (int i = 0; i < MD5Buffer.Length; i++)
    45. {
    46. strmd5 += MD5Buffer[i].ToString("x2");//将十进制转换成十六进制
    47. }
    48. //这样是10进制,需求的是16进制(3244185981728979115075721453575112,ac59075b964b0715)
    49. return strmd5;
    50. }
    51. }
    52. }