問題タブ [keccak]

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.

0 投票する
1 に答える
816 参照

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_r5}。

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 関数呼び出し

この問題に関するヘルプは大歓迎です。

0 投票する
1 に答える
2685 参照

node.js - npm エラー「Keccak バインディングのコンパイルに失敗しました。」トリュフを入れながら

Truffle をインストールしようとしましたが、次のエラーが発生しました。

トリュフコマンドをテストしたところ、動作しているように見えますが、なぜこのエラーが発生するのかわかりません...

(ここにもう少しテキストが必要なので、ここにあなたは非常に素晴らしいハッカー Ipsum を持っています: Haxx0r ipsum 機能クライアントです python else パケット スニファー エポック ソケット.保護された gcc シェル バイトを除いて、リープフロッグを割り当てます。)

ご協力ありがとうございました

0 投票する
0 に答える
341 参照

java - Java Keccak-256 実装のゼロ バイト メッセージのハッシュが正しくない

Java で Keccak-256 暗号化ハッシュ関数の独自の実装を作成しようとしています。Keccak 仕様の概要とその実装ガイドを参照用に使用しています。長さゼロの入力を使用して実装をテストしたいと考えています。このオンラインツールによると。長さゼロの入力には次のハッシュが必要ですC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470が、私のハッシュは別のものです。

私のコードはGithubにあります。私の考えでは、メッセージのパディング (ハッシュされるのはそれだけです) で何か間違ったことをしたか、byte[] から long への変換とその逆、または吸収/スクイーズ フェーズでバイト オーダーで何かをしたに違いありません。私の実装でkeccak-f[1600]は、各レーンに 64 ビットしかなく、各ブロックが 1088 ビットまたは 136 バイトであることだけが必要です。コードで状態を表すために、long 型の 5 行 5 列の 2D 配列を使用することにしました。

ゼロ バイトのメッセージを使用するということは、136 バイトのブロックが 1 つだけ存在し、すべてが単なるパディングであることを意味します。この投稿によると、keccak はリトルエンディアンを使用するため、パディングは次のバイト順である必要があります。

私は他の誰かの実装を見てきましたが、自分のエラーがどこにあるかを見つけることができないようです.

これはスポンジ関数です:

これは私のパッド機能です:

そして、これは keccak 順列の私のコードです:

そして最後に、byte[] を long に変換したり戻したりするためのヘルパー メソッド:

concatBytes の最後のヘルパー メソッド: