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

作者:逍遥Sean

简介:一个主修Java的Web网站\游戏服务器后端开发者

主页:https://blog.csdn.net/Ureliable

觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言

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

C#实现MD5加密

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

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

csharp 复制代码
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.Cryptography 和 System.Text。
    2. GetMd5Hash 方法 :
      • 创建 MD5 实例。
      • 将输入字符串转换为字节数组,并计算哈希值。
      • 将字节数组转换为十六进制字符串,以生成最终的MD5哈希值。
  • 示例输出:

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

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

csharp 复制代码
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加密的基本原理和实现方式,并在实际项目中应用这些技术。

相关推荐
huaqianzkh1 天前
WinForm C#:循环修改控件UI闪烁卡顿?SuspendLayout / ResumeLayout 与 BeginUpdate 优化
开发语言·ui·c#
用户3721574261352 天前
C# 实现 Excel 单元格保护:锁定公式并允许编辑指定区域
c#·ai编程·编程语言
公子小六2 天前
基于.NET的Windows窗体编程之WinForms数据持久化(1)
windows·microsoft·c#·.net·winforms
三雷科技2 天前
第6章第4节:自定义分词器
开发语言·c#
zhanghaha13143 天前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
Coder_Shenshen3 天前
罗克韦尔ACD工程归档离线变量树解析
算法·c#
寂寞的船3 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
1-1=03 天前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
波力海苔夹心脆6755 天前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
AI导出鸭PC端5 天前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭