1

新しいSHA-3Keccakアルゴリズムで動作するHashLibライブラリ@https://hashlib.codeplex.com/を取得しようとしています。正しいハッシュコードを出力する必要があると思われる単純なコンソールアプリケーションを作成しましたが、そうではありません。

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();
            }
        }
    }
}

アプリケーションは正常にビルドおよび実行されますが、出力は非常に間違っています。他の人のKeccakアルゴリズムの実装を使用すると、異なる結果が得られ、たとえばこのwiki投稿とも一致しません。https://en.wikipedia.org/wiki/SHA-3つまり、明らかに何かが間違っています。

たとえば、テキストを空のままにすると、「df987cfd23fbc92e7e87faaca300ec3fなど」というメッセージが表示されます。ウィキや他のツールは私が取得する必要があると言っている間

"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"

、これはまったく異なるものです。もちろん、空でない文字列でも試してみました。

誰か提案がありますか?

4

1 に答える 1

6

HashLibのバージョンが古すぎます。最近の変更を見ると、テストベクトルが取得したものから取得する必要のあるものに変更されていることがわかります。(もちろん、アルゴリズムも変更されました。)

于 2012-12-27T21:27:51.990 に答える