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

寻找一种从字符串在C#中执行以下操作的方法。 公共静态字符串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;
    }
    
已邀请:
您需要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);
    }
}
    
得到这个工作。从这里取来,修改了一下。
    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);
    }
    

要回复问题请先登录注册