我想知道是否有一种方法可以将整个字符串列表快速转换为一个唯一的 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/