ハッシュ生成ツール/ MD5 · SHA

ブラウザ内蔵の Web Crypto API を使用して、MD5、SHA-1、SHA-256、SHA-512 ハッシュ値をリアルタイムに計算します。

入力テキスト
MD5
SHA-1
SHA-256
SHA-512

このツールは役に立ちましたか?

ハッシュアルゴリズムとは

ハッシュアルゴリズムは、任意の長さの入力データを固定長の出力に変換する一方向関数です。一般的なハッシュアルゴリズムにはMD5(128ビット)、SHA-1(160ビット)、SHA-256(256ビット)、SHA-512(512ビット)があります。ハッシュは決定論的(同じ入力は常に同じ出力を生成)、一方向的(ハッシュ値から元のデータを復元不可)、雪崩効果(入力の微小な変化が出力に大きな変化をもたらす)という特性を持ちます。

ハッシュの一般的な使用場面

パスワード保存:システムは平文のパスワードではなくハッシュ値(通常ソルト付き)を保存します。ファイル完全性検証:ダウンロード後にSHA-256ハッシュ値を比較してファイルが改ざんされていないことを確認。電子署名:ドキュメントのハッシュ値に署名して出所と完全性を検証。データ重複排除:ハッシュ値で2つのデータが同一かを高速判定。ブロックチェーン:BitcoinはダブルSHA-256ハッシュで取引の改ざん防止を実現しています。

MD5はまだ安全に使えるか

MD5は衝突脆弱性(異なる入力が同じハッシュ値を生成可能)が証明されており、パスワード保存や電子署名などのセキュリティが重要な場面では使用すべきではありません。ただし、ファイルチェックサムやキャッシュキー生成など、非セキュリティ用途では現在も広く使用されています。セキュリティが重要な場面ではSHA-256以上の使用を推奨します。このツールはMD5、SHA-1、SHA-256、SHA-512に対応しており、用途に応じて選択できます。

コード例

JavaScript (Web Crypto API)
async function sha256(text) {
  const data = new TextEncoder().encode(text);
  const hash = await crypto.subtle.digest(
    "SHA-256", data
  );
  return Array.from(new Uint8Array(hash))
    .map(b => b.toString(16).padStart(2, "0"))
    .join("");
}

await sha256("hello");
// "2cf24dba5fb0a30e26e83b2ac5b9e29e..."
Python (hashlib)
import hashlib

text = "hello".encode("utf-8")

print(hashlib.md5(text).hexdigest())
print(hashlib.sha1(text).hexdigest())
print(hashlib.sha256(text).hexdigest())
print(hashlib.sha512(text).hexdigest())

# File hash
with open("file.txt", "rb") as f:
    print(hashlib.sha256(f.read()).hexdigest())
Go (crypto)
import (
  "crypto/md5"
  "crypto/sha256"
  "fmt"
)

data := []byte("hello")

md5Hash := md5.Sum(data)
sha256Hash := sha256.Sum256(data)

fmt.Printf("%x\n", md5Hash)
fmt.Printf("%x\n", sha256Hash)
Shell
# Linux
echo -n "hello" | md5sum
echo -n "hello" | sha256sum
echo -n "hello" | sha512sum

# macOS
echo -n "hello" | md5
echo -n "hello" | shasum -a 256

# File
sha256sum myfile.zip
shasum -a 256 myfile.zip

よくある質問

ハッシュ関数とは何ですか?
ハッシュ関数は、任意の長さの入力データを固定長の出力(ダイジェスト)にマッピングするアルゴリズムです。同じ入力は常に同じハッシュ値を生成し、異なる入力がほぼ同じ出力を生成することはなく(衝突耐性)、ハッシュ値から入力を復元することはできません(一方向性)。
MD5 はまだ安全ですか?
MD5 はパスワードの保存やデジタル署名には安全ではありません。既知の衝突攻撃が存在します。ファイルの整合性チェックやチェックサムなど、セキュリティ以外の用途では依然として広く使用されています。本番環境のパスワードには bcrypt や Argon2 を使用してください。
SHA-256 と SHA-512 の違いは何ですか?
どちらも SHA-2 ファミリーに属し、十分なセキュリティを備えています。SHA-256 は 32 バイト(256 ビット)のダイジェストを生成し、SHA-512 は 64 バイト(512 ビット)を生成します。64 ビット CPU では SHA-512 の方が高速で、32 ビットシステムでは SHA-256 の方が高速です。ビットコインは SHA-256 を使用し、Git は SHA-1 を使用しています(SHA-256 に移行中)。
ハッシュ値が同じなら内容も同じですか?
実質的にはそうです。SHA-256 や SHA-512 ではハッシュ衝突(異なる入力が同じハッシュを生成すること)は計算上実行不可能です。ダウンロード後にファイルの SHA-256 を検証すれば、改ざんや破損がないことを確認できます。
ターミナルでハッシュを計算するには?
Linux: md5sum file.txt / sha256sum file.txt / sha512sum file.txt。macOS: md5 file.txt / shasum -a 256 file.txt / shasum -a 512 file.txt。Windows PowerShell: Get-FileHash file.txt -Algorithm SHA256。
データは安全ですか?
はい。このツールは完全にブラウザ内で動作します。MD5 は純粋な JavaScript で実装され、SHA ハッシュはブラウザ内蔵の Web Crypto API を使用しています。データがサーバーに送信されることはありません。