UTILS.
100% ブラウザ内で完結
🧂

scrypt KDF ハッシュ生成・検証ツール

設定可能なN、r、pコストでパスワードからscryptキーを導出するか、保存されたscrypt文字列とパスワードを照合します。すべてブラウザ内で実行。

パスワードは100%ブラウザ内でハッシュ化されます——何もアップロードされません。

— ここに結果が表示されます —

このツールについて

scrypt KDF ハッシュ生成・検証ツールは、scrypt出力をブラウザ内でローカルに導出・検証します。Colin Percivalが設計しRFC 7914で標準化されたscryptは、メモリハードな鍵導出関数です:そのコストは意図的にメモリ帯域幅に支配されるため、カスタムのクラッキングハードウェアが得る利点はわずかです。パイプラインは、パスワードを展開するPBKDF2-HMAC-SHA256、大きな連続メモリ使用を強制するためにBlockMixとSalsa20/8コアの上に構築されたROMix関数、そして選んだ長さの導出鍵を生成する最後のPBKDF2-HMAC-SHA256です。

生成モードはcrypto.getRandomValuesから16バイトのランダムなソルトを読み、3つのコストパラメーターでscryptを実行します:NはCPU/メモリコストで2のべき乗でなければならず(デフォルト16384 = 2^14)、rはブロックサイズ(デフォルト8)、pは並列化係数(デフォルト1)です。メモリ使用量はおよそ 128 · N · r バイト——デフォルトで約16 MiB——で、設定が256 MiBを超えるとツールが警告します。出力は $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key> という自己記述的な文字列で、ln = log2(N) なので、検証に必要なすべてのパラメーターがハッシュとともに運ばれます。

検証モードはその文字列から ln、r、p、ソルト、保存された鍵を解析し、候補パスワードで導出鍵を再計算し、定数時間比較で一致か不一致かを報告します。scryptコアはブラウザの厳格なセキュリティポリシーの下でeval不使用のWebAssemblyビルドとして実行されるため、パスワードは100%ブラウザ内で処理され、何もアップロードされません。

よくある質問

なぜNは2のべき乗でなければならないのですか?
scryptのROMixステップは正確にN個のブロックのテーブルをインデックスし、そのintegerify-and-maskアドレッシングのためにNが2のべき乗であることに依存します。ツールは2のべき乗でない値を拒否します。一般的な選択は対話利用の16384(2^14)とファイル暗号化の1048576(2^20)です。
scryptはどのくらいメモリを使いますか?
およそ 128 · N · r バイトです。デフォルトのN=16384、r=8では約16 MiBです。ブラウザがこれを実際に割り当てるため、大きなN値やr値は低RAMデバイスで遅くなったり失敗したりします——ツールは256 MiBを超えると警告します。
rとpは何を制御しますか?
rはブロックサイズで、メモリ使用量とブロックあたりの連続作業量の両方をスケールします。rを増やすとNと並んでメモリコストが上がります。pは並列化係数で、p個の独立したscrypt計算を実行し、インスタンスあたりのメモリフットプリントを上げずにCPUコストを上げます。
生成されるハッシュの形式は何ですか?
$scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key> という自己記述的な文字列です。すべてのパラメーターを埋め込むため、検証モードにはその文字列とパスワードだけが必要です。すべての計算はローカルです——何もアップロードされません。

その他のツール