当前位置: 代码网 > it编程>编程语言>C# > C#使用MD5算法对密码进行加密的示例代码

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

2024年05月18日 C# 我要评论
一、涉及到的知识点1.md5md5(message digest algorithm 5)是一种被广泛使用的“消息-摘要算法”。“消息-摘要算法”实际上

一、涉及到的知识点

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算法密码加密内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com