piapia123
ja

MD5 / SHA ハッシュ計算

エンコード・暗号

処理はすべてブラウザ内で完結します。データは送信されません

入力
出力

テキストの MD5・SHA-1・SHA-256・SHA-512 のダイジェストを計算し、16進数または Base64 で出力します。日本語や中国語、emoji は常に UTF-8 のバイト列として計算するので、「こんにちは」のダイジェストは openssl や sha256sum が同じファイルに対して出す値と完全に一致します —— 文字単位で計算すると、多言語が混在したテキストでは誰も検証できない結果になります。MD5 は本ツール内蔵の実装を使います。ブラウザ標準の Web Crypto がすでに提供していないからです。最後に一言:MD5 と SHA-1 はパスワードや署名にはとうに不向きで、チェックサムや、他人から渡されたダイジェストの再現にだけ向いています。

機能

  • 4つのアルゴリズム:MD5・SHA-1・SHA-256・SHA-512
  • 出力は16進数(大文字・小文字を切替可)または Base64
  • 日本語や中国語、emoji は UTF-8 バイトで計算し、結果は openssl や sha256sum と 1 桁まで一致
  • MD5 は内蔵実装 —— ブラウザの Web Crypto はすでに MD5 を提供していません
  • 数 MB のテキストでも計算しきり、ページが応答しなくなることはありません
  • ダイジェストは端末のメモリ内で計算され、内容がブラウザの外へ出ることはありません

使い方

  1. テキストを入力欄に貼り付けます
  2. アルゴリズムと出力のエンコードを選びます(16進数の大文字が必要ならチェックを入れます)
  3. Ctrl/⌘ + Enter を押すか「実行」をクリックします
  4. 「コピー」でダイジェストを取り出せます

よくある質問

「現在の環境では Web Crypto が利用できません」と出るのはなぜですか?
SHA 系はブラウザ標準の crypto.subtle を使いますが、これは安全なコンテキストにしか存在しません:https:// か localhost / 127.0.0.1 でこのページを開いた場合だけです。http:// や社内 IP で開くとそのままでは使えません —— これはブラウザの安全ポリシーであり、本ツールの制限ではありません。その環境でも MD5 は計算できます。あの実装は crypto.subtle に依存していないからです。
MD5 はまだ使えますか?
チェックサムなら使えますが、セキュリティ用途には使えません。MD5 と SHA-1 はどちらも衝突を構成できることが実証されています —— 異なる2つの内容が同じダイジェストになるのです。ですからパスワードの保存、デジタル署名、改ざん検知には使わないでください。パスワードには bcrypt・scrypt・Argon2 のような、遅くなるよう設計された専用のハッシュを使ってください。
ハッシュと暗号化は何が違いますか?
ハッシュは一方向です:内容からダイジェストは計算できますが、ダイジェストから内容へは戻せず、「復号」というものもありません。暗号化は可逆で、鍵が必要です。ですから世の中の「MD5 復号」は実質的にレインボーテーブルか総当たりであり、出てくるのはたまたま一致した原文にすぎません。
日本語で計算したダイジェストが、渡された値と違うのはなぜですか?
多くの場合、符号化の違いです。同じ「こんにちは」でも UTF-8 では 15 バイト、Shift_JIS では 10 バイトなので、ダイジェストが違って当然です。このサイトは常に UTF-8 で処理します —— これも現在の Web ページと API の共通の約束事です。
入力の長さに上限はありますか?
入力の上限はおよそ 5 MB で、超えるとページが固まるのではなく明確なメッセージが出ます。ダイジェスト自体の長さは固定です:MD5 は 128 ビット、SHA-1 は 160 ビット、SHA-256 は 256 ビット、SHA-512 は 512 ビットで、入力の長さとは関係ありません。

関連ツール

HMAC 署名

エンコード・暗号

秘密鍵とメッセージから HMAC 署名を計算します。空白や日本語、中国語を含む鍵でも Node・Java・Python と一致し、鍵は端末内の計算にだけ使われて送信されません。

Base64 変換

エンコード・暗号

テキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。

パスワード生成

生成

長さと文字種を指定して強力なランダムパスワードを生成。エントロピーを即時表示し、強さを数値で比較できます。パスワードは端末内のみ、送信も記録もありません。

URL エンコード

エンコード・暗号

日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。

HTML 実体参照

エンコード・暗号

< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&amp;lt; は山括弧ではなく &lt; になります。すべてブラウザ内で処理します。

JWT デコード

エンコード・暗号

JWT を header・payload・signature に分け、iat や exp を読める日時に変換します。署名は検証せず、その旨を出力に明記します。すべてブラウザ内で処理します。