Java 用のさまざまなKeccak実装を 試しています。この実装はこれまでのところ最も有望ですが、奇妙な結果が得られています。テスト ケースはここで定義されています(ただし、テスト ベクトルに従って 16 進文字列を直接使用しています)。現在の (そして正しい) テスト ベクトルは、ここで緑色で定義されています (Web サイトから公式のテスト ベクトル zip ファイルをダウンロードする手間を省くために、便宜上リンクを提供しています)。
まず、テスト ベクトルの「len」フィールドと「msg」フィールドの相関関係がわかりません。「Len」は、「msg」の長さをビット単位で表したものです。たとえば、'len' = 5, 'msg' = "48" (16 進文字列) の場合、2 桁の 16 進数 = 1 バイト、つまり 8 ビットだと思いました。私は何が欠けていますか?
16、24、40、56、64、72、112、および 128 (長さは、テスト ベクトルであり、入力は 'msg' です)。長さとして取得している値: 32、48、80、88、96、104 ですが、テスト ベクトルと一致しません。なぜこれが起こっているのかについて、誰でも知識に基づいた推測をすることができますか? もちろん、誰かが Java での別の実装を推奨できるなら、私は感謝します。