开发者

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

开发者 https://www.devze.com 2024-08-12 13:31 出处:网络 作者: wenchm
目录一、涉及到的知识点1.MD52.使用基类的 Create 方法来创建 MD5 对象3.对每个字节进行加密并将其转换为十六进制字符串4.ComputeHash(Byte[])二、使用MD5算法对密码进行加密一、涉及到的知识点
目录
  • 一、涉及到的知识点
    • 1.MD5
    • 2.使用基类的 Create 方法来创建 MD5 对象
    • 3.对每个字节进行加密并将其转换为十六进制字符串
    • 4.ComputeHash(Byte[])
  • 二、使用MD5算法对密码进行加密

    一、涉及到的知识点

    1.MD5

    MD5(Message Digest Algorithm 5)是一种被广泛使用的“消息-摘要算法”。“消息-摘要算法”实际上就是一个单项散列函数,数据块经过单向散列函数得到一个固定长度的散列值,数据块的签名就是计算数js据块的散列值,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 st编程客栈atic 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算法密码加php密内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号