C#使用MD5算法对密码进行加密的示例代码

 更新时间:2024年03月21日 11:28:06   作者:wenchm  
MD5(Message Digest Algorithm 5)是一种被广泛使用的“消息-摘要算法”,“消息-摘要算法”实际上就是一个单项散列函数,数据块经过单向散列函数得到一个固定长度的散列值,本文给大家介绍了C#使用MD5算法对密码进行加密,需要的朋友可以参考下

一、涉及到的知识点

1.MD5

MD5(Message Digest Algorithm 5)是一种被广泛使用的“消息-摘要算法”。“消息-摘要算法”实际上就是一个单项散列函数,数据块经过单向散列函数得到一个固定长度的散列值,数据块的签名就是计算数据块的散列值,MD5算法的散列值为128位。

2.使用基类的 Create 方法来创建 MD5 对象

应该使用其基类的 Create 方法来创建 MD5 对象。如果还是用MD5CryptoServiceProvider 类,那么将会得到警告SYSLIB0021。

使用 MD5.Create() 方法来创建 MD5 对象更加简洁易读。这种方法也适用于其他过时的加密类,如 SHA1CryptoServiceProvider、SHA256CryptoServiceProvider 等。通过使用基类的 Create() 方法,代码将更加简洁、易读且符合最佳实践。

using System.Security.Cryptography;
 
// ...
 
MD5 md5 = MD5.Create();

3.对每个字节进行加密并将其转换为十六进制字符串

str += md5data[i].ToString("x").PadLeft(2, '0');//对遍历到的字节进行加密

具体来说,这段代码执行以下操作:

  • 使用 for 循环遍历字节数组 md5data 中的每个字节。
  • 将当前字节转换为十六进制字符串,使用 “x” 格式说明符表示。例如,字节值 0x1A 将转换为字符串 “1a”。
  • 使用 PadLeft 方法将转换后的十六进制字符串左对齐,确保其长度为 2。如果字符串长度小于 2,将用字符 ‘0’ 在左侧填充。例如,字符串 “1a” 将被转换为 “01a”。
  • 将处理后的十六进制字符串追加到字符串变量 str 中。
  • 通过这些操作,原始字节数据将被转换为一个包含十六进制字符的字符串。这是 MD5 加密过程的一部分,最终将生成一个 32 个字符的 MD5 哈希值。

4.ComputeHash(Byte[])

计算指定字节数组的哈希值。

public byte[] ComputeHash (byte[] buffer);
 
参数
buffer    Byte[]
要计算其哈希代码的输入。
 
返回
Byte[]
计算所得的哈希代码。
 
例外
ArgumentNullException
buffer 为 null。
 
ObjectDisposedException
对象已被释放。

二、使用MD5算法对密码进行加密

// 使用MD5算法对密码进行加密
using System.Security.Cryptography;
namespace _155
{
    class Program
    {
        /// <summary>
        /// 对遍历到的字节进行加密
        /// </summary>
        /// <param name="strPwd">输入的待加密的字符串</param>
        /// <returns name="str">返回加密后的值</returns>
        public static string Encrypt(string strPwd)
        {
            MD5 md5 = MD5.Create();
            byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);//将字符编码为一个字节序列
            byte[] md5data = md5.ComputeHash(data);                     //计算data字节数组的哈希值
            md5.Clear();       //清空MD5对象
            string str = "";   //定义一个变量,用来记录加密后的密码
            for (int i = 0; i < md5data.Length - 1; i++)
            {
                str += md5data[i].ToString("x").PadLeft(2, '0');
            }
            return str;
        }
 
        static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);
 
            while (true)
            {
                Console.Write("请输入密码:");
                string P_str_Code = Console.ReadLine()!;
                Console.WriteLine("使用MD5加密后的结果为:" + Encrypt(P_str_Code));
            }
        }
    }
}
//运行结果:
/*
请输入密码:123456789Qq
使用MD5加密后的结果为:6d28b4834bd6a9e384be01c131a8f2
请输入密码:123456789QQ
使用MD5加密后的结果为:46e7640c5b2ddeab142d71d872163b
请输入密码:123456789qq
使用MD5加密后的结果为:9c32d6523556378b8b1632720f7ab1
请输入密码:
 */

到此这篇关于C#使用MD5算法对密码进行加密的示例代码的文章就介绍到这了,更多相关C# MD5算法密码加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#验证用户输入信息是否包含危险字符串的方法

    C#验证用户输入信息是否包含危险字符串的方法

    这篇文章主要介绍了C#验证用户输入信息是否包含危险字符串的方法,可针对and、or、exec、insert、select等SQL操作技巧进行过滤操作,非常具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#实现自定义定时组件的方法

    C#实现自定义定时组件的方法

    这篇文章主要介绍了C#实现自定义定时组件的方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#实现高性能检索文档的5大核心技巧总结

    C#实现高性能检索文档的5大核心技巧总结

    C#如何突破10GB文档的检索瓶颈,是优化算法,还是升级硬件,内存与磁盘如何平衡,下面小编就为大家简单分享5个C#高性能检索文档的核心技巧吧
    2025-10-10
  • C#操作图片读取和存储SQLserver实现代码

    C#操作图片读取和存储SQLserver实现代码

    用C#将Image转换成byte[]并插入数据库/将图片数据从SQLserver中取出来并显示到pictureBox控件上,接下来将为你详细介绍下实现步骤,感兴趣的你可以参考下
    2013-03-03
  • C#处理TCP数据的方法详解

    C#处理TCP数据的方法详解

    Tcp是一个面向连接的流数据传输协议,用人话说就是传输是一个已经建立好连接的管道,数据都在管道里像流水一样流淌到对端,那么数据必然存在几个问题,比如数据如何持续的读取,数据包的边界等,本文给大家介绍了C#处理TCP数据的方法,需要的朋友可以参考下
    2024-06-06
  • Winform 控件优化LayeredWindow无锯齿圆角窗体

    Winform 控件优化LayeredWindow无锯齿圆角窗体

    这篇文章主要为大家介绍了Winform 控件优化LayeredWindow实现无锯齿圆角窗体示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • C#使用符号表实现查找算法

    C#使用符号表实现查找算法

    本文详细讲解了C#使用符号表实现查找算法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C# WinForm调用net core实现文件上传接口

    C# WinForm调用net core实现文件上传接口

    这篇文章主要为大家详细介绍了C# WinForm如何调用net core实现文件上传接口,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • C#中的高效IO库System.IO.Pipelines

    C#中的高效IO库System.IO.Pipelines

    这篇文章介绍了C#中的高效IO库System.IO.Pipelines,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 在C#中调用Windows防火墙界面的常见方式

    在C#中调用Windows防火墙界面的常见方式

    在 C# 中调用 Windows 防火墙界面(基础设置或高级安全设置),可以使用 进程启动(Process.Start) 或 Win32 API 来实现,所以本文给大家介绍了C#调用Windows防火墙界面的常见方式,需要的朋友可以参考下
    2025-11-11

最新评论