📜  c# sha1 (1)

📅  最后修改于: 2023-12-03 15:13:49.602000             🧑  作者: Mango

C# SHA1 算法介绍

概述

SHA1 是一种加密算法,用于生成具有唯一性的 40 个字符的哈希值。它是一种单向函数,即可从原来的数据中生成哈希值,但无法从哈希值中推算出原始数据。

C# 提供了 SHA1 类,可用于计算 SHA1 哈希值。

使用 SHA1 类计算哈希值

下面是一个计算 SHA1 哈希值的示例:

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

class Program {
    static string ComputeSHA1(string input) {
        using (SHA1 sha1 = SHA1.Create()) {
            byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
            StringBuilder sb = new StringBuilder();
            foreach (byte b in hashBytes) {
                sb.Append(b.ToString("x2"));
            }
            return sb.ToString();
        }
    }

    static void Main(string[] args) {
        string input = "hello world";
        string sha1 = ComputeSHA1(input);
        Console.WriteLine(sha1);
    }
}

上面的代码中,使用 SHA1.Create() 创建 SHA1 实例,然后调用 ComputeHash 方法计算给定字符串的 SHA1 哈希值,最后将结果以 16 进制字符串的形式输出。

示例解析

上面的示例中,我们首先定义了一个 ComputeSHA1 方法,用于计算给定字符串的 SHA1 哈希值:

static string ComputeSHA1(string input) {
    using (SHA1 sha1 = SHA1.Create()) {
        byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(input));
        StringBuilder sb = new StringBuilder();
        foreach (byte b in hashBytes) {
            sb.Append(b.ToString("x2"));
        }
        return sb.ToString();
    }
}

在方法内部,我们首先使用 using 块创建一个 SHA1 实例,然后调用 ComputeHash 方法计算哈希值。由于 ComputeHash 方法返回的是一个字节数组,我们需要将其转换为字符串输出。在上面的示例中,我们采用了一个 StringBuilder 对象来拼接字节数组的每个元素,最后将其转换为一个 16 进制字符串。

在 Main 方法中,我们调用 ComputeSHA1 方法计算给定字符串的 SHA1 哈希值,并输出结果:

static void Main(string[] args) {
    string input = "hello world";
    string sha1 = ComputeSHA1(input);
    Console.WriteLine(sha1);
}
总结

SHA1 算法是一种常用的加密算法,它可用于生成具有唯一性的哈希值。C# 提供了 SHA1 类,可用于计算 SHA1 哈希值。要计算 SHA1 哈希值,只需创建一个 SHA1 实例,调用 ComputeHash 方法即可。