迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 C# 中从字哈希值符串计算 MD5 哈希值

作者:迹忆客 最近更新:2024/02/01 浏览次数:

散列算法是用于将任意输入数据映射到固定大小散列的数学算法。它们用于多种用途,例如将数据存储在哈希值映射密码验证消息消化加密货币安全等数据结构中。

MD5 属于散列算法的消息摘要类。Rivest 开发了 MD5 和其他算法,如 MD2MD4 等。

该算法最初设计用于验证数字签名。但后来,发现了许多导致其弃用的漏洞。

尽管如此,它仍然用于数据完整性验证,并为理解高级算法奠定了基础。MD5 算法与所有消息消化算法一样,将未知长度的消息作为输入,并将其转换为固定大小的散列。

对输入字符串的微小更改将导致完全不同的哈希值。本文将学习如何使用 C# 计算 MD5 哈希值。


C# 中使用 MD5 算法

MD5 算法包括以下四个主要步骤:

首先,添加填充位。

在这一步中,我们添加填充位,使总位数变为 64,小于最接近的 512 倍数。这样做是为了使算法可以处理 512 位大小的数据,步长 2,以 64 位表示的字符串长度相加得到 512 的偶数倍。

第二,添加长度位。

64 位计算字符串的长度。将它们附加到步骤 1 中形成的输出。

第三,初始化 MD 缓冲区。

我们初始化了 4 个消息摘要缓冲区,其名称为 ABCD32 位。它们如下:

A = 01 23 45 67
B = 89 ab cd ef
C = fe dc ba 98
D = 76 54 32 10

第四是单个 512 位块的处理。

整个位被分成大小为 512 的块。形成的每个块被分成 1632 位的子块。形成的所有 16 块通过一系列 4 操作与缓冲区 ABCD 传递以给出最终散列。


使用 System.Security.Cryptography 库从 C# 字符串计算 MD5 哈希值

using System;
using System.Security.Cryptography;
using System.Text;

public class Test {
  public static string ComputeMd5Hash(string message) {
    using (MD5 md5 = MD5.Create()) {
      byte[] input = Encoding.ASCII.GetBytes(message);
      byte[] hash = md5.ComputeHash(input);

      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < hash.Length; i++) {
        sb.Append(hash[i].ToString("X2"));
      }
      return sb.ToString();
    }
  }
  public static void Main() {
    string message = "Welcome to DelfStack";
    Console.WriteLine(ComputeMd5Hash(message));
  }
}

输出:

53C62733BB54F2B720A32490E6C447FF

在上面的程序中,我们创建了一个存在于 C# 中的 MD5 类的对象,它通过 ComputeHash() 方法提供 md5 算法的现成实现。

我们将消息字符串转换为字节流以匹配 ComputeHash() 方法的函数签名,然后以字节流的形式返回结果。然后,我们使用字符串生成器类将字节流转换为有效的 C# 字符串。

上一篇:用 C# 发送一个简单的 SSH 命令

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 C# 发送一个简单的 SSH 命令

发布时间:2024/02/02 浏览次数:161 分类:编程语言

本教程讨论如何在 C# 中发送简单的 SSH 命令。指南将讨论如何在 C# 中发送简单的 SSH 命令。在 C# 中发送一个简单的 SSH 命令

在 C# 中检查对象是否为空

发布时间:2024/02/02 浏览次数:100 分类:编程语言

在 C# 中,有两种主要方法可用于检查对象是否为 null:==运算符和 is 运算符。本教程将讨论在 C# 中检查对象是否为空的方法。在 C# 中使用 == 运算符检查空对象

在 C# 中删除对象

发布时间:2024/02/02 浏览次数:82 分类:编程语言

我们可以通过在 C# 中为其分配空值来删除用户定义类的对象。本教程将讨论在 C# 中删除用户定义类的对象的方法。在 C# 中通过给它分配 null 值来删除一个用户定义的类对象

在 C# 中将对象序列化为 XML

发布时间:2024/02/02 浏览次数:91 分类:编程语言

XmlSerializer 类可用于将类对象序列化为 C# 中的 XML 文件或字符串。本教程将讨论如何在 C# 中将类对象序列化为 XML 文件或字符串。

在 C# 中将 XML 反序列化为对象

发布时间:2024/02/02 浏览次数:135 分类:编程语言

在本教程中,通过示例了解将 xml 反序列化为 C# 对象的不同方法。使用 Visual Studio 的粘贴特殊功能、xsd 工具,并在 C# 中键入等效类。

Linux 上的开发配置 C#

发布时间:2024/02/02 浏览次数:192 分类:编程语言

本文介绍如何设置 C# 语言以在 Linux 上进行开发。如果你对在 Linux 中开发 C# 应用程序的方法感兴趣,这篇文章是专门为你准备的。

C# 中的构造函数链

发布时间:2024/02/02 浏览次数:125 分类:编程语言

本教程演示如何使用标准语法在 C# 中进行构造函数链接本教程将演示如何在 C# 中进行构造函数链接。要了解构造函数链,首先必须了解以下概念。

C# 中的百分比计算

发布时间:2024/02/02 浏览次数:123 分类:编程语言

我们将在本文中学习如何在 C# 中计算百分比。本文将演示如何在 C# 编程语言中计算百分比。创建一个使用 C# 计算百分比的程序

C# 中的 Telnet 库

发布时间:2024/02/02 浏览次数:133 分类:编程语言

本教程介绍 Telnet 库并演示 C# 中的简单 Telnet 界面。本教程将解释 Telnet 库并用 C# 演示一个简单的 Telnet 接口。C# 中的 Telnet 库

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便