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

发布于 2024-11-01 13:19:30 字数 858 浏览 1 评论 0原文

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

公共static String sha512Hex(byte[] data)

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

参数: data - 要消化的数据 返回: 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;
    }

Looking for a way to do the following in C# from a string.

public static String sha512Hex(byte[] data)

Calculates the SHA-512 digest and returns the value as a hex string.

Parameters:
data - Data to digest
Returns:
SHA-512 digest as a hex string

    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;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

左岸枫 2024-11-08 13:19:30

System.Security.Cryptography.SHA512 是您所需要的吗?

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

LINQPad 中执行会产生:

EE-26-B0-DD-4A-F7-E7-49-AA-1A-8E-E3-C1-0A-E9-92-3F-61-89-80-77-2E-47-3F -88-19-A5-D4-94-0E-0D-B2-7A-C1-85-F8-A0-E1-D5-F8-4F-88-BC-88-7F-D6-7B-14-37 -32-C3-04-CC-5F-A9-AD-8E-6F-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);
    }
}

Would System.Security.Cryptography.SHA512 be what you need?

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

Executed in LINQPad produces:

EE-26-B0-DD-4A-F7-E7-49-AA-1A-8E-E3-C1-0A-E9-92-3F-61-89-80-77-2E-47-3F-88-19-A5-D4-94-0E-0D-B2-7A-C1-85-F8-A0-E1-D5-F8-4F-88-BC-88-7F-D6-7B-14-37-32-C3-04-CC-5F-A9-AD-8E-6F-57-F5-00-28-A8-FF

To create the method from your question:

public static string sha512Hex(byte[] data)
{
    using (var alg = SHA512.Create())
    {
        alg.ComputeHash(data);
        return BitConverter.ToString(alg.Hash);
    }
}
昔梦 2024-11-08 13:19:30

得到这个工作。摘自这里并进行了一些修改。

    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);
    }

Got this to work. Taken from here and modified a bit.

    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);
    }
静赏你的温柔 2024-11-08 13:19:30

更好的内存管理:

    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);
    }

Better memory management:

    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);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文