bcrypt・argon2の照合
bcrypt & argon2 Checker
パスワードを指定したコストでbcryptにかけ、既存のbcryptのハッシュと突き合わせます(argon2は判別しますが計算はしません)。
パスワードをbcryptでハッシュしたり、既存の`$2a$`・`$2b$`・`$2y$`のハッシュと突き合わせたりします。実装はOpenBSDの`$2b$`で、公開されているOpenwallのcrypt_blowfishのテストベクタで検証してあり、このタブのワーカーの中で動きます。
このタブの中だけで処理します。どこにも送りません。
1,024 ラウンド — 長く使われてきた既定値。
$2b$ の bcrypt です。公開されている Openwall crypt_blowfish のテストベクターで検証しており、すべてこのタブの中で動きます。パスワードは先頭 72 バイトだけが効きます。ここのバグではなく、bcrypt がそういうものです。 $2x$ のハッシュ(2011 年より前の crypt_blowfish のバグで作られたもの)は断り、argon2 は実装していません。使い方
ハッシュか照合かを選びます
ハッシュには費用を決める必要があり、照合するときは貼り付けたハッシュから費用を読みます。文字列の中に入っているからです。
見合う費用を選びます
1段階ごとに仕事量が倍になります。10が長らく既定でしたし、12が今のところ無難な選択で、14はブラウザでは数秒はっきりかかります。それが目的です。攻撃側にも同じだけかかります。
判定を読みます
一致か、不一致かが出ます。すべてタブの中で起きるので、本番から持ってきたハッシュを貼り付けても、どこへも行きません。
よくある質問
argon2に対応せず、拒否するのはなぜですか
ブラウザで信頼できるargon2を使うには、このプロジェクトが1行ずつ監査できないWebAssemblyのビルドを一緒に配ることになるからです。bcryptは、読めるコードとしてここに実装され、公開されたテストベクタと突き合わせてあります。ブラックボックスから出てきたそれらしい答えより、argon2のハッシュを拒否するほうが正直です。
長いパスワードが、違うはずのハッシュにも一致するのはなぜですか
bcryptは先頭の72バイトしか読みません。先頭の72バイトが同じ2つのパスワードは、bcryptにとって同じパスワードです。この実装ではなく、bcryptそのものがそうです。長いパスフレーズを使うときに問題になり、みながargon2へ移る理由の1つです。
同じパスワードを2回ハッシュすると、違う文字列が出るのはなぜですか
実行のたびに16バイトのソルトを新しく引き、そのソルトがハッシュの中に一緒に入るからです。どちらの文字列も、同じパスワードを検証します。毎回同じ値が出るパスワードのハッシュは、ソルトの無いハッシュであり、レインボーテーブルが狙ったのがまさにそれです。
$2a$、$2b$、$2y$は違うものですか
72バイト以下のパスワードでは違いませんし、実際にはすべてがその範囲に入ります。接頭辞は、そのハッシュがどの歴史的なバグの前に作られたのか、あとに作られたのかを記録しているだけです。例外は`$2x$`で、これは2011年より前のcrypt_blowfishのバグで作られたハッシュを示すため、ここでは拒否します。
ここから渡せます
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。
ハッシュ種別の判定
Hash Identifier
長さ・使われている文字・接頭辞から、そのハッシュを作ったアルゴリズムを可能性の高い順に挙げます。
.htpasswd生成
.htpasswd Generator
bcrypt・APR1・SHAのいずれかでApacheやnginxのBasic認証の行を作ります。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
次の一手
このツールが出したものをそのまま受け取れる道具です。
ハッシュ種別の判定
Hash Identifier
長さ・使われている文字・接頭辞から、そのハッシュを作ったアルゴリズムを可能性の高い順に挙げます。
文字列のハッシュ
Text Hash
文字列のMD5・SHA-1・SHA-256・SHA-384・SHA-512・CRC-32を計算し、大文字表記とBase64での出力も選べます。
.htpasswd生成
.htpasswd Generator
bcrypt・APR1・SHAのいずれかでApacheやnginxのBasic認証の行を作ります。
パスワード強度チェック
Password Strength Meter
そのパスワードを破るのにどれだけかかるかを見積もり、弱くしている型を名指しします。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。