c# - 将字符串列表转换为一个唯一的 sha512

标签 c# hash sha512

我想知道是否有一种方法可以将整个字符串列表快速转换为一个唯一的 sha512 哈希字符串。

目前我使用这种方法来获取唯一的 sha512 哈希,但是当列表中的字符串越来越多时,这种方式变得越来越慢。

string hashDataList = string.Empty;

for (int i = 0; i < ListOfElement.Count; i++)
{
    if (i < ListOfElement.Count)
    {
        hashDataList += ListOfElement[i];
    }
}

hashDataList = MakeHash(HashDataList);

Console.WriteLine("Hash: "+hashDataList);

编辑:

哈希方法:

    public static string MakeHash(string str)
    {
        using (var hash = SHA512.Create())
        {
            var bytes = Encoding.UTF8.GetBytes(str);
            var hashedInputBytes = hash.ComputeHash(bytes);

            var hashedInputStringBuilder = new StringBuilder(128);
            foreach (var b in hashedInputBytes)
                hashedInputStringBuilder.Append(b.ToString("X2"));

            str = hashedInputStringBuilder.ToString();
            hashedInputStringBuilder.Clear();
            GC.SuppressFinalize(bytes);
            GC.SuppressFinalize(hashedInputBytes);
            GC.SuppressFinalize(hashedInputStringBuilder);
            return str;
        }
    }

最佳答案

试试这个,使用内置的 SHA512:

StringBuilder sb = new StringBuilder();

foreach(string s in ListOfElement) 
{
    sb.Append(s);
}

hashDataList = BitConverter.ToString   (new System.Security.Cryptography.SHA512CryptoServiceProvider()
                           .ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()))).Replace("-", String.Empty).ToUpper();

Console.WriteLine("Hash: "+hashDataList);

性能在很大程度上也取决于 MakeHash() 的实现。

关于c# - 将字符串列表转换为一个唯一的 sha512,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53707817/

相关文章:

c# - 单选按钮列表未正确选择新值

java - 在gradle中使用maven-publish插件生成SHA512校验和文件

c# - 无法让模板缓冲区在 OpenTK 中工作,简单的 2D 四边形

c# - 在没有超时的情况下从数据库中提取记录

哈希函数从整数坐标对中提供唯一的 uint

php - 为什么我要把密码做成哈希码,然后保存在数据库中?

循环插入后 C Glib 哈希不匹配?

freepascal - Free Pascal 有实现 SHA256 或 SHA512 的方法吗?

c - C 语言的 SHA-512 源代码

c# - 用c#生成特定的html标签