問題タブ [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.
unit-testing - Keccak (SHA-3) のサンプル ハッシュ (テスト ベクトル) は利用可能になりましたか?
Keccak (SHA-3) の実装に興味があり、入力と期待される出力のペアのセットをテストしたいと考えています。公式のテスト ベクトルはリリースされていますか? 他の SHA ルーチン用にいくつか持っていたのを覚えていますが、それらは非常に役に立ちました。
c# - C#の間違った出力へのSHA-3 Keccakハッシュの単純な実装?
新しいSHA-3Keccakアルゴリズムで動作するHashLibライブラリ@https://hashlib.codeplex.com/を取得しようとしています。正しいハッシュコードを出力する必要があると思われる単純なコンソールアプリケーションを作成しましたが、そうではありません。
アプリケーションは正常にビルドおよび実行されますが、出力は非常に間違っています。他の人のKeccakアルゴリズムの実装を使用すると、異なる結果が得られ、たとえばこのwiki投稿とも一致しません。https://en.wikipedia.org/wiki/SHA-3つまり、明らかに何かが間違っています。
たとえば、テキストを空のままにすると、「df987cfd23fbc92e7e87faaca300ec3fなど」というメッセージが表示されます。ウィキや他のツールは私が取得する必要があると言っている間
"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"
、これはまったく異なるものです。もちろん、空でない文字列でも試してみました。
誰か提案がありますか?
php - パスワードのハッシュ化: Keccak かどうか
ハッシュ アルゴリズム コンテストの勝者SHA-3
が選ばれました。勝者のアルゴリズムはKeccakです。
私はフグを使っていてとても気に入っていますが、ケッカの方がいいと言われています。Web サイトにユーザーのパスワードを保存するために使用する価値はありますか?
はいの場合、Web プログラミングで使用される PHP、Python、Ruby、またはその他の言語用の Keccak の実装はありますか?
この質問が他の人にも役立つことを願っています。ありがとう!
java - 予期しない keccak 出力
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 での別の実装を推奨できるなら、私は感謝します。
hash - ハッシュをカットしても安全ですか?
約 20 億の文字列のハッシュを保存したいと考えています。そのためには、できるだけ少ないストレージを使用したいと考えています。
一連の 16 進数としてハッシュを返す理想的なハッシュ アルゴリズムを考えてみましょう (md5 ハッシュなど)。アイデアを理解する限り、これは、ハッシュの長さが8シンボル以下である必要があることを意味します。そのようなハッシュは 40 億以上 (16 * 16 * 16 * 16 * 16 * 16 * 16 * 16) の異なる文字列をハッシュできるためです。
それで、スペースを節約するためにハッシュを特定の長さにカットしても安全かどうか知りたいですか?(もちろん、ハッシュは衝突すべきではありません)
はい/いいえ/おそらく - 説明または関連研究へのリンクを含む回答をいただければ幸いです。
Ps - 8 文字のハッシュで 20 億個の文字列を格納できるかどうかをテストできることはわかっています。しかし、20 億のハッシュと 20 億の切り捨てられたバージョンを比較する必要があります。私には些細なことではないように思えるので、そうする前に聞いた方がいいでしょう。
c# - C# 暗号化ライブラリ hashlib はその実装で正しいですか?
ハッシュリブチーム、
SHA3 ライブラリ (Keccak) が正しい暗号化を返すかどうかはわかりません。codeplex からダウンロードした最新のソース コード (変更セット 78295) を使用しましたが、Wikipedia (sha3 ページ) で提供されているベクトルと結果と一致しません。
次のコードを使用すると
私のVS 2012 IDEでは、次のような結果が得られます
これは実際に返されるはずです:
次の投稿によると、SHA-3 Keccak ハッシュの単純な実装が C# の間違った出力に出力されますか? David は、最新のコードベースは正しい結果を返すはずだと答えました。変更が適用されているかどうかはわかりません。
ExtremelyLongMsgKAT_512.txt ファイルから取得したテスト ベクトルを使用した場合
そしてコードを使用して
結果も期待とは異なります。テスト ベクトル ファイルには、結果は次のようになります。
しかし、実際の結果は
c - バイトからワードに変換
このメソッドの機能を理解しようとかなりの時間を費やした後、私はまだそれが何をするのか理解できませんでした. 私が理解しているように、stateAsBytes には "\xA1\X32\X89\XB2" のような 16 進文字列が含まれている必要がstateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j)
あります。なぜビットごとの代入を使用するのですか?
javascript - CryptoJS SHA3 は Keccak テスト ベクトルに合格しませんか?
CryptoJS が Keccak のいくつかの既知の回答テストに合格するようにしようとしていますが、正しくないダイジェスト ハッシュが返されているようです。
Keccak ダウンロード ページの「既知の回答とモンテカルロ テストの結果」リンクをクリックするか、直接zip ファイルに移動します。
私は CryptoJS.SHA3 でテストし、ShortMsgKAT_512.txt または LongMsgKAT_512.txt のテスト ベクトルを使用しています。残念ながら、テスト ベクトル バー 1 のいずれとも一致させることができません。テストに合格したのは、LongMsgKAT.txt の最初のテストでした。
var message = '724627916C50338643E6996F07877EAFD96BDF01DA7E991D4155B9BE1295EA7D21C9391F4C4A41C75F77E5D27389253393725F1427F57914B273AB862B9E31DABCE506E558720520D33352D119F699E784F9E548FF91BC35CA147042128709820D69A8287EA3257857615EB0321270E94B84F446942765CE882B191FAEE7E1C87E0F0BD4E0CD8A927703524B559B769CA4ECE1F6DBF313FDCF67C572EC4185C1A88E86EC11B6454B371980020F19633B6B95BD280E4FBCB0161E1A82470320CEC6ECFA25AC73D09F1536F286D3F9DACAFB2CD1D0CE72D64D197F5C7520B3CCB2FD74EB72664BA93853EF41EABF52F015DD591500D018DD162815CC993595B195;'
var correctResult = '4E987768469F546296AD1A43D54C0A0A6C87E7E4E26B686612B1E5B1554B689BFFD56D6A4B454CE4A5717625BBAD321F8D05F19C225259646F21416AA2D7C2ED';
私はこれを次のコードで渡すようにしました:
var words = CryptoJS.enc.Hex.parse(message.toLowerCase());
var testResult = CryptoJS.SHA3(words, { outputLength: 512 }).toString();
ただし、私が試した他のテストは失敗します。何が起こっているのですか?
1 つの可能性は、CryptoJS の作成者がコードを書いてから、Keccak チームがアルゴリズムとテスト ベクトルを更新したことです。現在の CryptoJS.SHA3 コードと一致するソース管理で元のテスト ベクトルを表示する方法はありますか? 彼らのオンライン ソース管理 (CVS?) へのリンクを見たと思いますが、今は見つかりません。
別の可能性として、間違ったテスト ベクター ファイルを使用している可能性があります。CryptoJS.SHA3 によって内部的に使用されるレートと容量の設定と、それを照合するテスト ベクトルを知っている人はいますか?
理想的には、暗号化ライブラリには、その実装が正しく、リファレンス テスト ベクトルと一致することを証明する単体テスト スイートが必要です。そうでなければ、実装を信頼できません。このCryptoJSライブラリと一致する古いバージョンのテストベクトルがあることを願っています。そうでなければ、ライブラリを捨てる必要があります.
php - SHA-3 Keccak ハッシュ アルゴリズムの実装を理解する簡単な方法
インターネットでアルゴリズム keccak に関する参考文献を探していますが、理解できるものはありません。
ここに私が見つけたいくつかのリンクがあります。
- http://plaintext.crypto.lo.gy/article/495/untwisted-a-cryptol-%20implementation-of-keccak-part-1
- http://en.wikipedia.org/wiki/SHA-3
実装やアルゴリズム keccak を簡単に理解する方法はありますか? このアルゴリズムの PHP 実装にコードはありますか?