MD5、SHA-1/224/256/384/512、HMAC などの一方向ハッシュを生成し、整合性チェックやテストに使えます。入力欄にテキストを貼り付け、必要に応じて鍵を指定すると、選択したアルゴリズムのダイジェスト文字列を出力します。
ブラウザ内でローカルに実行6 種類のダイジェストと、鍵を使う同じ 6 種類です。MD5・SHA-1・SHA-224・SHA-256・SHA-384・SHA-512 に加え、それぞれの HMAC があります。すべての値は独立した実装と照合済みで、各言語 36 件、12 アルゴリズム × 3 入力を最後の 16 進文字まで一致させています。
出力は小文字の 16 進数のみです。MD5 は 32 文字、SHA-1 は 40 文字、SHA-224 は 56 文字、SHA-256 は 64 文字、SHA-384 は 96 文字、SHA-512 は 128 文字になります。計算はページ内で行われるためテキストはブラウザの外に出ず、読み込み後はオフラインでも動作します。
MD5 と SHA-1 はチェックサム用と、いまも指定される既存システム用です。新しい用途では SHA-256 か SHA-512 を選びます。SHA-224 と SHA-384 はこの 2 つの短縮版で、一部のライブラリや証明書ツールが名前で指定するために用意しています。
12 種類はいずれも一方向で、ページに逆算機能はありません。1 文字のダイジェストも 1 メガバイトのダイジェストも同じ長さです。テキスト "abc" は MD5 で 900150983cd24fb0d6963f7d28e17f72、SHA-256 で ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad となり、独立した実装と同じ値になります。
HMAC は秘密鍵を計算に混ぜるため、同じテキストでも鍵ごとに違う値になります。鍵の欄は HMAC のボタンを押すまで隠れており、緑のボタンを押した時点で再び隠れます。通常のダイジェストは、欄に何が入っていても鍵を使いません。
ハッシュ関数のブロック長より長い鍵は先にハッシュされます(RFC 2104 の要求どおり)。空の鍵も受け付け、入力を拒否せず空の鍵での値が返ります。SHA-224 と SHA-384 は出力を切り詰めるため、JavaScript の HMAC 実装が誤りやすい箇所です。ここでは両方とも独立した実装と照合し、一致しています。
結果欄に入るのは 16 進数の文字列そのものです。接頭辞も区切りもアルゴリズム名も、付け足された改行もありません。そのままチェックサムファイルやコマンドラインに使えますが、逆にファイル名などと組み合わせる作業は手作業になります。
これはハッシュ計算機であり、パスワード保存の仕組みではありません。選んだ関数を 1 回適用するだけで、ソルトも反復回数もなく、値を保存したり照合したりもしません。パスワードには、そのままの SHA-256 ではなく bcrypt・scrypt・Argon2 を使ってください。
ライブラリはサイトから読み込まれ、計算はページ内で行われます。読み込み後にハッシュ計算が発生させたリクエストは 0 件で、テキストが送信されることはありません。4.8 MB の入力は SHA-256 で約 0.6 秒、1 MB は約 0.2 秒でした。
入力欄はテキスト用なので、扱えるのは UTF-8 のテキストで、バイナリファイルは対象外です。バイト列は事前にエンコードする必要があります。ファイルの整合性確認には、バイトを直接読む sha256sum や certutil が出す値と比べてください。