如何在C#中获取sha3-512哈希?

如何在C#中获取sha3-512哈希?,c#,hash,sha,hashlib,sha-3,C#,Hash,Sha,Hashlib,Sha 3,例如,中的字符串“test”给出了“9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14” 但是 返回 “3BFF7B1F2042AC3861BD4C0B40EFAA8A695909BFB31753FC7B1BD69778DE1225A627C8F07CF4814CC05435ADA2AFEE3

例如,中的字符串“test”给出了“9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14”

但是

返回 “3BFF7B1F2042AC3861BD4C0B40EFAA8A695909BFB31753FC7B1BD69778DE1225A627C8F07CF4814CC05435ADA2AFEE3F4513A886715427477624F24E551B”

我需要获取第一个字符串,而不是hashlib提供的字符串。

您可以使用。它有一个SHA3实现

var hashAlgorithm = new Org.BouncyCastle.Crypto.Digests.Sha3Digest(512);

// Choose correct encoding based on your usecase
byte[] input = Encoding.ASCII.GetBytes("test");

hashAlgorithm.BlockUpdate(input, 0, input.Length);

byte[] result = new byte[64]; // 512 / 8 = 64
hashAlgorithm.DoFinal(result, 0);

string hashString = BitConverter.ToString(result);
hashString = hashString.Replace("-", "").ToLowerInvariant();

Console.WriteLine(hashString);
输出为

9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14


好吧,哪一个错了?您确定这一行不是您的问题吗
Console.WriteLine(tempHash.ToString().ToLower().Replace(“-”,”)?@Jodrell网站上的9ece正确无误。该网站是否正在执行utf8?我猜.net版本正在做一些不同的事情。相关:请注意Keccak512与SHA-3不同-它不会给出与实际512位SHA-3实现相同的哈希值。
var hashAlgorithm = new Org.BouncyCastle.Crypto.Digests.Sha3Digest(512);

// Choose correct encoding based on your usecase
byte[] input = Encoding.ASCII.GetBytes("test");

hashAlgorithm.BlockUpdate(input, 0, input.Length);

byte[] result = new byte[64]; // 512 / 8 = 64
hashAlgorithm.DoFinal(result, 0);

string hashString = BitConverter.ToString(result);
hashString = hashString.Replace("-", "").ToLowerInvariant();

Console.WriteLine(hashString);