Hash & Crypto Helpers

パスワードハッシュ生成保存形式まで含めて確かめる

テスト用の文字列で生成するか、検証モードで保存済みのレコードを確認してください。

パスワードハッシュ生成

テスト用パスワード

ハッシュレコード

テストデータのみを使用してください。入力はページとWorkerのメモリー内で処理し、送信やブラウザーストレージへの保存はしません。

設定

テスト初期値はコスト10、範囲は4〜14。計算量は2^costで増加します。本番用の推奨設定ではありません。

ランダムは毎回16バイト。固定はbcryptが16バイト、その他が8〜64バイト。空白や0x接頭辞は使用しません。

bcryptとArgon2idは符号化文字列、scrypt/PBKDF2はHeyUtils JSONです。すべてのフレームワークに共通する形式ではありません。

テスト文字列を入力して操作を実行してください。

ライブラリを変更してからテスト用アカウントの認証に失敗する場合は、アルゴリズムだけでなく保存形式も確認します。パスワードハッシュ生成なら、候補文字列、ソルト、コストをそろえた再現用データを用意できます。

検証ではレコードに含まれる設定を読み取ります。生成側の選択を変更しても、保存済みハッシュの計算条件は上書きされません。先に既知のサンプルで一致を確かめると、文字列と設定のどちらを調べるべきか整理できます。

パスワードハッシュ生成で確認できること

ソルトの違いを結果で見る

パスワードハッシュ生成のランダムモードは実行のたびに16バイトのソルトを作成します。同じ文字列でも結果が変わる様子を確認でき、固定モードでは同じソルトを使って別の実装と照合できます。

同じ伏せ字の入力が異なるソルトを通り、別々のハッシュレコードになる図。

不一致と形式エラーを分ける

不一致は保存された条件で計算を終えた結果です。一方、読み取れない形式や上限を超えるコストは計算前にエラーになります。誤ったパスワードと、そもそも検証できないレコードを区別して扱います。

一つの保存レコードに対して二つの候補を検証し、一致と不一致を示す図。

再現できる検証データを用意する

01

サンプルを適用して一致を確認

サンプルの読み込みは置換プレビューを開きます。適用すると検証モードになり、架空の文字列と一致するbcryptレコードが入ります。一文字変更してもう一度検証すると、不一致も確認できます。

  • 適用するまでは元の入力を保持し、適用後は一度だけ入力と結果をまとめて戻せます。
02

固定ソルトの意味を確かめる

生成モードでランダムと固定を切り替えます。固定ソルトは文字列そのものではなく16進数で表したバイト列です。bcryptは16バイト、それ以外は8〜64バイトを受け付けます。

  • 結果に表示された実際のソルトを固定欄に使うと、ランダム生成した計算も再現できます。
03

更新状態を見てから保存

Ctrl/Cmd + Enterで選択中の操作を実行します。入力や設定を編集すると処理が中止され、古い結果のコピーとダウンロードは無効になります。生成成功または検証一致後に保存できます。

  • 実行中の中止に対応し、15秒を超えた処理は自動終了します。

レコードに必要な条件をまとめて扱う

4方式の実計算に対応

bcrypt検証と生成、scrypt、Argon2id、PBKDF2-HMAC-SHA-256を利用できます。毎回一方式だけを実行するため、個別のテスト条件を確認できます。複数方式を同時実行する速度ランキングではありません。

ソルトとパラメーターを保持

bcryptにはコストファクター、Argon2idにはメモリー量・反復回数・並列度が含まれます。scryptとPBKDF2はバージョン付きのHeyUtils JSONにparameters、saltHex、hashHexを保存し、検証に必要な情報を残します。

計算の上限と実測時間を表示

入力したレコードのパラメーターにも上限を適用してから計算します。表示時間はこの端末での一回の測定で、初回はエンジンの読み込み時間を含む場合があります。サーバーの処理能力や本番環境の適正コストを表す数値ではありません。

対応形式とテスト時の制限

文字列を勝手に補正しない
空でない一行のテスト文字列を使います。上限はUTF-8で1024バイト、bcryptは72バイトです。空白やUnicode正規化の差を保持し、超過分の切り捨てや事前ハッシュは行いません。不正なUnicodeや改行は拒否します。
保存済みコストも上限の対象
bcryptは4〜14、scryptはln=10〜16でr=8・p=1固定です。Argon2idはm=8〜65536KiB、t=1〜6、p=1〜4で、m≥8pかつm×t≤131072が必要です。PBKDF2は1〜1000000回です。
全ライブラリの保存形式には対応しない
bcryptの$2a$・$2b$・$2y$、m,t,p順のArgon2id v19、本站のscrypt/PBKDF2 JSONに対応します。レコードは8192文字まで。Argon2i/d、v16、pepper、追加データ、任意のフレームワーク形式は扱いません。
ソルトと派生値のサイズを固定
ランダムソルトは16バイトです。固定ソルトは接頭辞や空白のない16進数で指定します。bcrypt以外の生成値は32バイト、検証可能な派生値は16〜64バイトです。PHCはパディングなしの正規Base64を使います。
認証基盤の設定を決定しない
既定値はブラウザーで試すための値です。パスワード復元、辞書攻撃、ファイル入力、一括実行、強度採点はありません。置換前のパスワードは一回の取り消し用として、次の編集・実行・ページ離脱までメモリーに残ります。

パスワードハッシュ生成のよくある質問

同じ文字列でも毎回ハッシュ値が変わるのはなぜですか?

ランダムモードではソルトが毎回変わるためです。ハッシュの中にソルトが含まれていれば、異なるレコードでも同じ候補文字列を検証できます。再現用の固定データが必要な場合は、文字列のバイト列、固定ソルト、アルゴリズム、コストをすべて同じにしてください。

ラウンド数はいくつに設定すればよいですか?

ここではbcryptのコスト10をテストの初期値にしています。4〜14の範囲で挙動を確認できますが、本番での推奨値ではありません。利用先の実装、同時アクセス数、許容する認証時間を考慮し、実際の環境で測定して決める必要があります。

このツールで生成したハッシュ値は本番環境でそのまま使えますか?

本番へのそのままの採用を保証するものではありません。固定のサンプルや低い計算コストは再現テスト向けです。実際の認証処理では利用ライブラリの形式と設定を確認し、ソルト生成や追加の秘密値などを含む運用全体で検証してください。

利用先が想定する形式と完全に一致しますか?

必ずしも一致しません。bcryptとArgon2idは記載した形式のみを読み取り、scryptとPBKDF2は本站独自のJSONレコードを使用します。Djangoなどの保存フィールドへそのまま貼る形式ではありません。利用先が事前ハッシュや別のBase64表現を使う場合は、その環境で確認します。

機密データを入れるときの注意点はありますか?

このページにはテスト用の値だけを入力してください。計算はブラウザーのWorker内で行い、入力を送信・保存しません。ただし、表示した文字列、クリップボード、ダウンロード、取り消し用の一時メモリーは操作に伴って残るため、実際のアカウントの秘密情報を使う必要はありません。

解決しませんでしたか?

パスワードハッシュ生成を試す

パスワードハッシュ生成でサンプルを検証し、一文字変えたときの結果を比べてください。

一致は候補の確認であり、強度の証明ではありません。