Простая реализация хеширования SHA-3 Keccak с неправильным выводом в C#?
Я буду держать это коротко и просто! Я изучаю C# и пытаюсь заставить библиотеку HashLib @ https://hashlib.codeplex.com/ работать над новым алгоритмом SHA-3 Keccak. Я написал простое консольное /Win32-приложение, которое предположительно должно выводить правильный хеш-код, но это не так!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using HashLib;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
{
string passPhrase = "";
IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512();
HashResult r = hash.ComputeString(passPhrase, System.Text.Encoding.ASCII);
Console.WriteLine(r.ToString().ToLower().Replace("-",""));
Console.WriteLine("{0}, {1}, {2}", hash.BlockSize, hash.HashSize, hash.Name);
Console.ReadLine();
}
}
}
}
Приложение собирается и работает нормально, но вывод очень неправильный. Когда я использую чужие реализации алгоритма Кеккака, я получаю разные результаты, и он не соответствует, например, этому посту вики. https://en.wikipedia.org/wiki/SHA-3 Так что, очевидно, что-то не так.
Когда я оставляю текст пустым, например, получаю следующее: "df987cfd23fbc92e7e87faaca300ec3f и т. Д. И т. Д." в то время как вики и другие инструменты говорят, что я должен получить
"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"
что-то совершенно другое. Я также пробовал это с непустыми строками конечно.
У кого-нибудь есть предложение?
1 ответ
Ваша версия HashLib слишком старая. Если вы посмотрите на последние изменения, то увидите, что тестовый вектор изменился с того, который вы получили, на тот, который вы должны получить. (Алгоритм также изменился, конечно.)