ハッシュ生成
任意のテキストのMD5、SHA-1、SHA-256、SHA-512、CRC-32をブラウザ内で計算します。
すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。
ハッシュは、どんな長さのテキストでも、固定長の短い指紋に変えます。同じ入力からは常に同じダイジェストが得られ、どこか1文字でも変えると結果全体が変わります。だからこそ、2つのものを並べて比べなくても同一かどうかを確かめるのに役立ちます。
仕組み
テキストはまずUTF-8でエンコードされ、そのバイト列に対してハッシュを計算します。これはASCIIを超える文字で重要です。é は2バイトなので、そのダイジェストは、別のエンコーディングでの1バイトの é のダイジェストとは異なります。アクセント付きの文字列で2つのツールの結果が食い違うとき、原因はほぼ必ずアルゴリズムではなくこの点です。
すべてこのページ内で計算します。5つのアルゴリズムは、ブラウザの暗号APIを使わずに独自に実装しています。理由は3つあります。そのAPIは暗号化されていないHTTPでは使えず、MD5の計算をきっぱり拒否し、非同期である一方、ここにある他のツールはそうではないからです。
ダイジェストは小文字の16進数で表示します。コマンドラインツールが出力する形式です。大文字の切り替えがあるのは、逆の形式で保存するシステムもあり、その2つを目で比べると、存在しない違いが見えてしまいやすいからです。
例
| ケース | 入力 | 結果 |
|---|---|---|
| 短い文字列のSHA-256 | hello | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
| 同じ文字列のMD5 | hello | 5d41402abc4b2a76b9719d911017c592 |
| 1文字違うだけで、何も残らない | hellp | d0763edaa9d9bd2a9516280e9044d885 |
よくある質問
ハッシュから元のテキストを復元できますか?
いいえ。どんなツールにもできません。ハッシュは暗号化ではなく、情報は失われています。1文字のダイジェストも小説のダイジェストも同じ長さです。ハッシュを「復号」すると称するサイトは、誰かがよく使われるパスワードからあらかじめ計算したダイジェストの表を検索しているだけで、そのリストに載っていた入力にしか通用しません。
これでパスワードをハッシュ化すべきですか?
いいえ。パスワードには、遅くなるよう設計されたアルゴリズム(bcrypt、scrypt、Argon2)を、パスワードごとにランダムなソルトを付けて、サーバー側で使う必要があります。この5つは高速で、それがまさに間違った性質です。グラフィックカードはMD5の候補を毎秒数十億個試せます。ここで入力したものはブラウザの外に出ませんが、その結果は、保存してはいけないものであることに変わりありません。
MD5やSHA-1が「破られている」とはどういう意味ですか?
同じダイジェストを持つ2つの異なる入力を意図的に作り出せるということで、どちらについても実証されています。そのため、誰かがファイルをすり替える動機を持つ場合、どちらも、そのファイルが約束されたものであることを証明できません。それでも、最もよく使われる用途、つまりダウンロードが壊れて届いたことや、2つのファイルがコピーであることを検出するには、どちらも十分に有効です。
なぜ自分のダイジェストが他のツールと一致しないのですか?
ほとんどの場合、末尾の改行か、文字エンコーディングの違いが原因です。改行で終わるファイルのハッシュは、改行なしのテキストのハッシュとは異なり、1バイトの違いも結果に影響します。このツールは、入力欄の文字そのものをUTF-8でエンコードしたものだけをハッシュ化します。
知っておきたいこと
- すべてブラウザ内で処理されます。貼り付けた内容はアップロード、記録、保存されません。