C#实战 - C#实现MD5加密

embedded/2024/9/23 14:30:36/

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言
在软件开发中,加密是保护数据安全的重要手段之一。MD5(Message Digest Algorithm 5)是一种常用的哈希算法,用于生成数据的摘要或哈希值。本文将介绍如何使用C#语言实现对字符串进行MD5加密的方法。

C#实现MD5加密

        • 1. 使用.NET Framework提供的类库
        • 解析
        • 2. 使用扩展方法封装MD5加密
        • 解析
        • 总结

1. 使用.NET Framework提供的类库

C#中可以利用 System.Security.Cryptography 命名空间下的 MD5 类来实现MD5加密。

using System;
using System.Security.Cryptography;
using System.Text;class Program
{static void Main(){string input = "Hello World!";string encrypted = GetMd5Hash(input);Console.WriteLine($"Input: {input}");Console.WriteLine($"MD5 Hash: {encrypted}");}static string GetMd5Hash(string input){using (MD5 md5Hash = MD5.Create()){// 将输入字符串转换为字节数组并计算哈希值byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));// 创建一个 StringBuilder 来保存哈希结果StringBuilder builder = new StringBuilder();// 将字节数组转换为十六进制字符串for (int i = 0; i < data.Length; i++){builder.Append(data[i].ToString("x2"));}return builder.ToString();}}
}
解析
  • 步骤说明

    1. 引入命名空间:使用 System.Security.CryptographySystem.Text
    2. GetMd5Hash 方法
      • 创建 MD5 实例。
      • 将输入字符串转换为字节数组,并计算哈希值。
      • 将字节数组转换为十六进制字符串,以生成最终的MD5哈希值。
  • 示例输出

    Input: Hello World!
    MD5 Hash: ed076287532e86365e841e92bfc50d8c
    
2. 使用扩展方法封装MD5加密

可以将MD5加密逻辑封装为一个扩展方法,以便在整个项目中重复使用。

using System;
using System.Security.Cryptography;
using System.Text;public static class MD5Extensions
{public static string ToMd5Hash(this string input){using (MD5 md5Hash = MD5.Create()){byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));StringBuilder builder = new StringBuilder();for (int i = 0; i < data.Length; i++){builder.Append(data[i].ToString("x2"));}return builder.ToString();}}
}class Program
{static void Main(){string input = "Hello World!";string encrypted = input.ToMd5Hash();Console.WriteLine($"Input: {input}");Console.WriteLine($"MD5 Hash: {encrypted}");}
}
解析
  • 步骤说明
    1. MD5Extensions 类:定义了一个静态类,并添加了 ToMd5Hash 扩展方法。
    2. 扩展方法使用:在 Main 方法中,通过 input.ToMd5Hash() 方式调用扩展方法,简化了代码。
总结

本文介绍了如何使用C#语言实现MD5加密的方法,涵盖了基本的使用方式和扩展方法封装。MD5加密适用于对字符串进行单向加密处理,生成不可逆的哈希值,常用于存储密码或验证数据完整性等场景。使用C#的 System.Security.Cryptography.MD5 类可以轻松实现这一功能,保障数据的安全性和可靠性。

希望本文能够帮助读者理解MD5加密的基本原理和实现方式,并在实际项目中应用这些技术。


http://www.ppmy.cn/embedded/90560.html

相关文章

计算机毕业设计选题推荐-校园服务系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Python中读取文件(斜杠(/)与反斜杠(\)问题)

读取文件 在Python中读取文件首先要知道该文件的路径。而Python提供的函数Path()&#xff08;注意p要大写&#xff09;可以读取路径&#xff0c;该函数在库pathlib中&#xff0c;所以我们需要首先从模块pathlib中导入该函数。 然后读入路径后需要使用read_text()方法去读入这…

TypeScript 装饰器详解

目录 装饰器 介绍 基本语法 类装饰器 方法装饰器 属性装饰器 参数装饰器 组合装饰器 装饰器工厂 总结 装饰器 介绍 TypeScript 中的装饰器&#xff08;decorators&#xff09;是一种特殊类型的声明&#xff0c;可以附加到类声明&#xff0c;方法&#xff0c;属性或…

【Golang 面试 - 进阶题】每日 3 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

Dubbo源码深度解析(二)

接着《Dubbo源码深度解析(一)》继续讲&#xff0c;上篇博客主要讲Dubbo提供的三个注解的作用&#xff0c;即&#xff1a;EnableDubbo、DubboComponentScan、EnableDubboConfig。其中后两个注解是在EnableDubbo上的&#xff0c;因此在启动类上加上EnableDubbo注解&#xff0c;等…

【Vue3】组件通信之provideinject

【Vue3】组件通信之provide&inject 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努…

再读左耳朵耗子的话有感震撼

创业 为什么会创业&#xff1f; 离开阿里的时候其实没想过要创业&#xff0c;因为那时候最重要的事情是父亲病危。我爸胰腺有些问题&#xff0c;医生说得做手术。不做手术肯定撑不了多久&#xff0c;做手术的话还有 50% 的概率能够救回来&#xff0c;但是需要观察一年。 当时…

企业定制AI智能名片微信小程序在私域流量运营中的应用与策略

摘要&#xff1a;随着2022年私域运营市场步入冷静期&#xff0c;企业逐渐从盲目模仿向精准化、个性化的运营模式转变。在这一背景下&#xff0c;企业定制AI智能名片微信小程序凭借其独特的智能化、便捷化特性&#xff0c;成为企业构建私域流量池、深化用户关系、实现高效转化的…