c# SHA-2 (512) Base64编码哈希

本文关键字:Base64 编码 哈希 SHA-2 | 更新日期: 2023-09-27 17:50:23

寻找一种方法在c#中从字符串中执行以下操作。

public static String sha512Hex(byte[] data)

计算SHA-512摘要并以十六进制字符串的形式返回值。

参数:数据-要消化的数据返回:SHA-512摘要为十六进制字符串

    private static string GetSHA512(string text)
    {
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] hashValue;
        byte[] message = UE.GetBytes(text);
        SHA512Managed hashString = new SHA512Managed();
        string encodedData = Convert.ToBase64String(message);
        string hex = "";
        hashValue = hashString.ComputeHash(UE.GetBytes(encodedData));
        foreach (byte x in hashValue)
        {
            hex += String.Format("{0:x2}", x);
        }
        return hex;
    }

c# SHA-2 (512) Base64编码哈希

将System.Security.Cryptography。SHA512是你需要的吗?

var alg = SHA512.Create();
alg.ComputeHash(Encoding.UTF8.GetBytes("test"));
BitConverter.ToString(alg.Hash).Dump();

在LINQPad中执行产生:

ee - 26 - b0 - dd - 4 a - f7 e7 - 49 - aa - 1 - 8 e - e3 - c1 - 0 - - e9 - 92 - 3 f - 61 - 89 - 80 - 77 - 2 - e - 47 - 3 f - 88 - 19 - a5 d4 - 94 - 0 - e - 0 - d - b2 - 7 - c1 - 85 - f8 a0 - e1 - d5 f8 -公元前4 - f - 88 - 88 - 7 - f - d6 - 7 b - 14 - 37 - 32 - c3 - 04 - cc - 5 - f - a9 -广告- 8 - e - 6 - f - 57 - f5 - 00 - 28 - a8 ff

根据问题创建方法:

public static string sha512Hex(byte[] data)
{
    using (var alg = SHA512.Create())
    {
        alg.ComputeHash(data);
        return BitConverter.ToString(alg.Hash);
    }
}

让这个工作。

    public static string CreateSHAHash(string Phrase)
    {
        SHA512Managed HashTool = new SHA512Managed();
        Byte[] PhraseAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(Phrase));
        Byte[] EncryptedBytes = HashTool.ComputeHash(PhraseAsByte);
        HashTool.Clear();
        return Convert.ToBase64String(EncryptedBytes);
    }

更好的内存管理:

    public static string SHA512Hash(string value)
    {
        byte[] encryptedBytes;
        using (var hashTool = new SHA512Managed())
        {
            encryptedBytes = hashTool.ComputeHash(System.Text.Encoding.UTF8.GetBytes(string.Concat(value)));
            hashTool.Clear();
        }
        return Convert.ToBase64String(encryptedBytes);
    }