ハッシュ生成
SHA-256ハッシュを生成します
ハッシュ変換
テキストやファイルから複数のアルゴリズムでハッシュ値を計算します。
| アルゴリズム | ハッシュ値 | |
|---|---|---|
| SHA-1 | (変換後にハッシュ値が表示されます) | |
| SHA-256 | (変換後にハッシュ値が表示されます) | |
| SHA-512 | (変換後にハッシュ値が表示されます) |
※ JavaScriptでハッシュ計算しているため、サーバにテキストやファイルは送信されません。ブラウザ上で安全に利用できます。
SHA-1, SHA-256, SHA-512
Secure Hash Algorithm(セキュアハッシュアルゴリズム)。アメリカ国家安全保障局(NSA)が設計しています。
SHA-1は160ビットを出力します。2017年に衝突攻撃の成功が発表されています。
SHA-1を改良したのがSHA-2で、出力長が異なるSHA-256、SHA-512など6種類あります。セキュリティが必要な用途ではSHA-256以上が推奨です。SHA-256は256ビット、SHA-512は512ビットを出力します。
ハッシュ / チェックサム / メッセージダイジェスト
ハッシュ関数やハッシュアルゴリズムとも言います。データを決まった長さの文字列に変える処理です。
パスワードのハッシュ値:オンラインサービスでパスワードの保存に使われます。ハッシュ値は元の文字に戻すことが困難なため、オンラインサービス側は入力したパスワードが何かは知りません。パスワードを忘れたとき元のパスワードを教えてくれないのはこのためでもあります。
ファイルの一致:ハッシュ値は40文字などの長さになるのを活かし、大きなファイルのハッシュ値をとっておき、ハッシュ値同士で比較して同じかどうかを調べるのに使われます。別のファイルから同じハッシュ値が生成される可能性もありますが、衝突の発生は非常に低いように設計されているのがいいハッシュです。
そのほかに通信の改竄チェックなど用途は多岐にわたります。
💡 ハッシュの雑学・Tips
🌌 SHA-256の出力パターンは宇宙の原子の数より多い
SHA-256は2の256乗(約1.16×10の77乗)通りの出力を持ちます。観測可能な宇宙全体の原子の数が約10の80乗とされており、それに迫るほどの膨大な組み合わせです。総当たりで元のデータを特定することが現実的に不可能な理由はここにあります。
🔗 ビットコインはSHA-256でできている
ビットコインのマイニングはSHA-256を使った計算競争です。ブロックのデータにナンス(nonce)と呼ばれる数値を加えてハッシュを計算し、その値が一定の条件(先頭にゼロが続くなど)を満たすまで繰り返します。世界中のマイナーが毎秒何京回もSHA-256を計算しています。
🎂 誕生日攻撃(Birthday Attack)とは
「23人集まれば誕生日が同じ人が50%以上の確率で存在する」という誕生日のパラドックスを応用したハッシュへの攻撃手法です。2つの異なるデータから同じハッシュ値(衝突)を見つける攻撃で、SHA-1が実質的に危殆化した要因の一つです。SHA-256以上ではこの攻撃も現実的には不可能です。
🧂 パスワード保存には「ソルト」が必須
同じパスワードは常に同じハッシュ値になるため、よくあるパスワードのハッシュを大量に事前計算した「レインボーテーブル」で逆引きできてしまいます。これを防ぐためにユーザーごとのランダムな文字列(ソルト)をパスワードに付加してからハッシュ化するのが現代のセキュリティのベストプラクティスです。
📥 ダウンロードファイルの改ざん検知に活用できる
LinuxのISOイメージなど信頼性が重要なファイルを配布するサイトでは、SHA-256のハッシュ値を公開しています。ダウンロード後に自分でハッシュを計算して照合することで、通信経路での改ざんや破損がなかったかを確認できます。このツールのファイルモードでそのまま検証に使えます。