問題タブ [sha-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - cryptopp で SHA3 ハッシュを生成する動作が正しくない
RHEL7 と Debian9 で cryptopp を使用して SHA3 ハッシュを生成すると、非常に奇妙な動作の違いが見られます。代わりに SHA1 または MD5 ハッシュを使用すると、出力は両方のプラットフォームで同じになります。次の最小限のプログラムに減らしました。
Debian では、出力は次のとおりです。
https://emn178.github.io/online-tools/sha3_256.htmlのオンラインコンバーターによると、これは正しいです
しかし、RHEL7 の出力は奇妙です。
したがって、私が何か間違っているか、ライブラリにバグがあるか、インストールが間違っているかのいずれかです。
libcrytopp を誤用していませんか? MessageEnd() の欠落のようなものはありますか?
RHEL7 の場合:
Debian の場合:
両方のプラットフォームで v6.0.0 のようですが、
c - Keccak のラウンド定数
最近、なんとなく、SHA-3 の背後にある暗号化プリミティブである Keccak の実装を試してみました。ただし、特に順列の「イオタ」ステップで使用されるラウンド定数の計算で、いくつかの問題に遭遇しました。
邪魔にならないように:はい。私はそれらがラウンド定数であることを知っています。それらを定数としてハードコーディングできることはわかっています。しかし、それのどこが楽しいのでしょうか。
特に、SHA-3 に関するFIPS 202 仕様書と、Keccak チーム独自のKeccak リファレンスを参照しています。しかし、私の努力にもかかわらず、正しい定数にたどり着くことができないようです。これまでビット操作を扱ったことがないので、完全に間違った方法で何かをしている場合は、遠慮なくお知らせください。
rc は、フィードバック多項式 の線形フィードバック シフト レジスタである Keccak の FIPS 202 標準で定義されている関数ですx^8 + x^6 + x^5 + x^4 + 1
。
(SHA-3 に固有の)の値は、i_r = {0, 1, ..., 22, 23} および j = {0, 1, ..., 4,t
を含む整数のセットとして定義されます。 j + 7 * i_r
5}。
The expected outputs (the round constants) are defined as follows: 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, 0x8000000080008000, 0x000000000000808b, 0x0000000080000001, 0x8000000080008081, 0x8000000000008009, 0x000000000000008a, 0x0000000000000088, 0x0000000080008009, 0x000000008000000a, 0x000000008000808b, 0x800000000000008b, 0x8000000000008089, 0x8000000000008003, 0x8000000000008002, 0x8000000000000080, 0x000000000000800a 、0x800000008000000a、0x8000000080008081、0x8000000000008080、0x0000000080000001、および 0x8000000080008008。
rc 関数の実装
rc 関数呼び出し
この問題に関するヘルプは大歓迎です。