ハッシュジェネレーター & チェックサム
テキストとファイルから一括でMD5、SHA-1、SHA-256、SHA-384、SHA-512を取得できます。ダウンロードしたファイルを公式のチェックサムと照合することで、改ざんされていないか確認できます。すべてローカルで処理され、ブラウザの外にデータが送信されることはありません。
- アルゴリズム
- MD5・SHA-1/256/384/512
- エンジン
- Web Crypto API
- プライバシー
- 100%ローカル処理
- 入力
- テキスト / ファイル
ファイルをここにドロップするか、クリックして参照
チェックサム計算にはファイルのバイトデータをローカルで読み込みます — 外部にアップロードされることはありません。インストーラー、ディスクイメージ、アーカイブに対応しています。
特徴
5種類のハッシュを一括で取得
手軽なフィンガープリントから安全な署名まで — 開発者、オペレーション、ダウンロード検証に必要なすべてのハッシュに対応します。
5種類のアルゴリズム
MD5、SHA-1、SHA-256、SHA-384、SHA-512を出力ビット長と共に一覧表示 — ツールを切り替える必要はありません。
リアルタイム計算
テキストのハッシュは入力中に自動的に計算され、ボタンを押す必要はありません。結果は等幅フォントで表示され、行をクリックするとコピーできます。
ファイルの整合性チェック
インストーラー、ディスクイメージ、アーカイブをドロップするだけで、公式のチェックサムと比較してダウンロードが改ざんされていないか確認できます。
ローカル処理、アップロード不要
SHAファミリはブラウザ標準のWeb Crypto APIを使用します。テキストとファイルは機密コンテンツでもマシンの外に送信されることはありません。
UTF-8準拠
テキストは UTF-8 バイトとしてハッシュ化されるため、md5sum、PHP の md5()、Python の hashlib の結果と完全に一致します。
ワンクリックコピー
各ハッシュを個別にコピーするか、ターミナルに貼り付け可能な標準チェックサム形式で一括コピーします。
ハッシュについて知っておくべきこと
その考え方は単純ですが、用途に合わないものを使用するのは重大なセキュリティミスです。
MD5 と SHA-1 は具体的に何ですか?
MD5 (Message-Digest Algorithm 5) は MIT の Ronald Rivest によって設計され、1992 年に RFC 1321 として公開されました。MD4 の後継として固定長の 128 ビット(16 進数文字 32 桁)のダイジェストを生成します。SHA-1 は米国国家安全保障局によって設計され、1995 年に連邦標準 FIPS 180-1 として公開され、160 ビットを生成します。この 2 つは以後 20 年間で最も広く普及したハッシュアルゴリズムとなり、ファイルチェックサム、パスワード保存、デジタル署名、Git コミット ID に使用されてきました。現在でも正しいダイジェストを生成することに注意してください。「安全ではない」というのは衝突耐性が破綻していることを意味し、出力が間違っているわけではありません。
ハッシュ、暗号化、エンコーディングは同じものですか?
いいえ、それぞれ異なる課題を解決するものです。エンコーディング(Base64 や URL エンコーディングなど)は誰でも元に戻せる可逆的な形式変換であり、セキュリティは備えていません。暗号化は鍵を用いて可逆的に変換するもので、平文から暗号文に変換され、正しい鍵で復号できます。ハッシュは一方向の関数であり鍵を持たず、ダイジェストから元のデータを復元できません。指紋付け、整合性チェック、署名に使用されます。よくある誤解が 2 つあります。Base64 を「暗号化」と勘違いすること、および「パスワードは MD5 で暗号化された」と言うことですが、これはハッシュ化であり、しかもパスワードを保存する方法として安全ではありません。
なぜハッシュは元のデータに逆戻しできないのですか?
ハッシュは一方向関数であり、任意の長さの入力が固定長のダイジェストに圧縮され、ほとんどの情報が捨てられます。文章を単語数から再構成できないのと同じように、ダイジェストから元のデータを導き出すことはできません。安全なアルゴリズムは、このような逆変換が計算上実行不可能になるように特別に設計されています。
MD5 と SHA-1 はまだ使用できますか?
ファイルが転送中に誤って破損したか確認するだけなら、はい。バイト 1 つの変更でも virtually MD5 は変わります。しかしセキュリティ目的では絶対に使用しないでください。実用的な衝突攻撃が存在します(研究者は自分の制御下にある異なる 2 つのファイルで同じ MD5 を作成できます)。パスワード、署名、証明書には SHA-256 以降を使用してください。
同じテキストなのに他のツールとハッシュが異なるのはなぜですか?
通常は 3 つの原因があります。①文字エンコーディングの違い(当ツールは常に UTF-8 を使用します。古いツールは GBK や Latin-1 を使用する場合があります);②末尾の改行 - コマンドラインの echo はデフォルトで 1 つ追加します(echo -n を使用してください);③コピー時の余分なスペースや不可視文字。ハッシュは 1 バイトごとに敏感で、1 バイトでもずれると結果が完全に変わります。
なぜパスワードを平文の MD5/SHA-256 で保存できないのですか?
通常のハッシュは高速です。ハッシュテーブルが漏洩すると攻撃者は毎秒数十億の推測を試すことができ、レインボーテーブルが一般的なパスワードを即座に逆引きします。パスワードには、パスワードごとに固有のソルトを持つ意図的に低速でメモリを多く消費するアルゴリズム(bcrypt、scrypt、Argon2)が必要で、これにより力攻撃が著しく高コストになります。
ダウンロードしたファイルの整合性をどう確認すればよいですか?
公式サイトで公開されているチェックサム(通常は SHA-256)を確認し、ここの「ファイルチェックサム」タブにダウンロードしたファイルをドラッグし、結果の上のボックスに公式の値を貼り付けます。ツールは値の長さからアルゴリズムを検出し、ファイルのバイトが配布元のものと完全に一致すると該当の行が緑色になります。赤色になった場合は破損または中間者攻撃による置き換えです — ファイルの実行は避けてください。
5つのアルゴリズムのうちどれを使うか
用途別に選択してください。新しいアルゴリズムはより長いダイジェストを生成し、攻撃に対する耐性が高く、計算にわずかに多くのコストがかかります。
| アルゴリズム | 導入年 | 出力長 | 安全性 | 典型的な使用例 |
|---|---|---|---|---|
| MD5 | 1992 | 128ビット(32文字) | 破損済み;衝突が実現可能 | 非セキュリティ目的のフィンガープリント、重複除去、レガシー互換性 |
| SHA-1 | 1995 | 160ビット(40文字) | 2017年以降、衝突が実現可能 | Gitの履歴IDやその他のレガシーシステム;新規のセキュリティ目的には不適 |
| SHA-256 | 2001 | 256ビット(64文字) | 現在安全 | ファイルチェックサム、署名、TLS証明書、ブロックチェーン — 普遍的なデフォルト |
| SHA-384 | 2001 | 384ビット(96文字) | 安全 | 384ビットを要求する準拠規制用のSHA-512の切り捨て版 |
| SHA-512 | 2001 | 512ビット(128文字) | 安全 | 高信頼性の署名;64ビットCPUではSHA-256より高速な場合が多い |
「安全」とは、これまでに実現可能な公開衝突攻撃が存在しないことを意味します。パスワード保存には、ハッシュの選択に関わらず bcrypt/Argon2 を使用してください。
チェックサム:実際にダウンロードしたファイルを検証する方法
ダウンロードページに記載されたMD5またはSHA-256の文字列が何のためにあるのか、その比較方法、比較対象 — 全てこのセクションにまとめてあります。
そもそも検証する理由
ディスク上のファイルが必ずしもサーバー上のファイルと同一とは限りません。10秒のチェックサム比較で、3種類のトラブルを防止できます:
再開可能なダウンロードや不安定なネットワークでは大容量ファイルが予期せずに余分なバイトを受け取ることが多く、破損したインストーラのトラブルシューティングは10秒以上かかることが多いです。
多くのダウンロードは実際にはミラーやCDNから取得され、同期の遅延やキャッシュの不具合で古いバージョンや不完全なファイルが提供されることがあります。
ダウンロード元が侵害されたり公衆ネットワークが乗っ取られたりした場合、ファイルにバックドアが仕込まれることがあります。2016年にはLinux Mintのサイトがハッキングされ、ダウンロードリンクがバックドア付きISOに置き換えられました — プロジェクトの最初の対応は全員にチェックサムを確認するよう呼びかけることでした。
チェックサムとは何か
配布元がサーバー上でファイルのハッシュを計算し、その結果をダウンロードページに公開します。ユーザーはダウンロード後にローカルで再度ハッシュを計算します。両方の文字列が完全に一致すれば、そのファイルは配布元がリリースした本来のデータであり、破損や改ざんはありません。チェックサムは1バイト単位で厳密で、1バイトでも変更されると値は完全に変わります。広義では、CRC32のような単純な accidental 破損を検出するための方式もチェックサムに含まれます。一方、MD5/SHAのような暗号学的ハッシュは、故意の偽造にも耐性を持ちます。
ファイルの検証は3ステップで行えます
-
1
公式のチェックサムを入手する
ダウンロードページで公開されているMD5/SHA-256の値を探し(多くの場合「checksum」とラベルされているか、.sha256の Companion ファイルとして提供されています)、文字列全体をコピーしてください。
-
2
ファイルをドロップしてペーストする
上の「ファイルのチェックサム」タブに切り替え、ダウンロードしたファイルをドロップし、結果の上部にあるボックスにチェックサムをペーストしてください。
-
3
色で結果を確認する
ツールは値の長さからアルゴリズムを自動的に判別します。緑色はファイルが公式リリースと完全に一致し安全であることを示し、赤色は破損または改ざんされている可能性があるため実行しないでください。
公式サイトのチェックサムの読み方
ダウンロードページにはさまざまな形式でチェックサムが記載されていますが、すべてハッシュ値とファイル名の2つの要素に集約されます。以下の3つの形式が最も一般的です。ペーストする際はハッシュ部分だけを抽出してください(本ツールは自動的にスペースと改行を無視します):
# 1. 1行形式:値だけが記載されている場合
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
# 2. sha256sum形式:値 + 2つのスペース + ファイル名(SHA256SUMSマニフェストはこの形式の行の集合です)
a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a ubuntu-24.04.iso
# 3. BSD形式:アルゴリズム名(ファイル名)= 値
SHA256 (ubuntu-24.04.iso) = a0570aa01532917be820a37994710cf09b6eba198bf9543c27be938c5f09e60a
MD5 または SHA-256
公式サイトが提供するものを検証してください。選択できる場合は、MD5は転送時の偶発的な破損に対して十分に機能します(偶発的な変更は事実上常にMD5値を変更します)。故意の改ざんに対しては、セキュリティソフトウェア、証明書、署名済みパッケージなどではSHA-256以上のものが必要です。実用的な衝突攻撃により攻撃者が同一MD5値の異なる2つのファイルを作成できるためです。この経緯については下記の「セキュリティの歴史」に記載しています。
コマンドラインから代わりに検証する
LinuxとmacOSでは、チェックサムツールに-cオプションを指定すると、マニフェスト全体を自動的に検証でき手動での比較は不要です。Windowsの標準コマンドは値の計算のみを行うため、ユーザー自身で公式の値と比較する必要があります。
| 環境 | 検証コマンド |
|---|---|
| Linux | sha256sum -c SHA256SUMS(マニフェストに記載されたすべてのファイルをチェック) |
| macOS | shasum -a 256 -c checksum.txt |
| 素早い単一値チェック | echo "公式の値 ファイル名" | sha256sum -c -(成功時にOKと表示) |
| Windows | Get-FileHash <file> -Algorithm SHA256で計算し、その後公式の値と比較する |
簡単なセキュリティの歴史:MD5の破綻経緯
MD5は一夜にして破綻したわけではありません。学術界で最初の攻撃が見つかってから実際に偽造証明書が出回るまで、20年の歳月を要しました。
-
1992
MD5が公開される
ロナルド・リベストが RFC 1321 で MD5 を公開。高速で実装が簡単で、常に 128 ビットのダイジェストを生成するため、ファイルのチェックサムやパスワードストレージの事実上の標準となり、暗号学的に安全と考えられていました。
-
2004
王晓云チームが MD5 の完全な衝突を公開
CRYPTO 2004 にて、中国の数学者王晓云が率いるチームが MD5 に対する完全な衝突攻撃を実演しました。IBM P690 スーパーコンピュータで約 1 時間で、異なる内容で同じハッシュを持つ 2 つのファイルを構築しました。後の改善により、通常のハードウェアで数秒まで短縮されました。MD5 が約束していた耐衝突性は失われ、その後のスタンディングオベーションは暗号学史上最も有名な瞬間の一つとなりました。
-
2008
偽装証明書が実際のインターネットに被害をもたらす
マーク・スティーヴンス、アレクサンダー・ソトィロフらが、選択プレフィックス攻撃を用いて、ブラウザが信頼する中間 CA 証明書の偽造に成功しました。異なるプレフィックスを持つ証明書が同じ署名を持つようになります。攻撃者は任意の偽サイトに対して「有効な」HTTPS 証明書を発行できるようになりました。CA はその直後 MD5 証明書の発行を停止しました。
-
2012
Flame マルウェアが MD5 を介して Windows を攻撃
国家が支援する Flame マルウェアは、MD5 衝突を利用して、Microsoft のターミナルサーバーライセンス認証局に偽のコード署名証明書に署名させ、Microsoft が署名した更新プログラムに偽装して中東全域に拡散しました。これは MD5 衝突を用いた初の実世界攻撃であり、Microsoft は緊急パッチで証明書を無効化しました。
-
2017
SHAttered: SHA-1 が破られる
Google とオランダの CWI 研究所(マーク・スティーヴンスら)は、約 6,500 CPU 年と 110 GPU 年のコストで、同一の SHA-1 ハッシュを持つ 2 つの異なる PDF ファイルを公開しました。その直後ブラウザは SHA-1 証明書への信頼を削除し、Git プラットフォームは SHA-1 からの移行を加速しました。160 ビット時代は終わりました。
重要なニュアンス:衝突攻撃は既存のファイルのハッシュを「解読」するものではなく、同じ値のハッシュを持つ特定の 2 つのファイルを構築するものです。しかし署名や証明書にとっては、それだけで致命的な偽造が可能になります。
コマンドラインでのハッシュ化
ブラウザが手元にない場合、すべての OS には組み込みコマンドが用意されています(SHA-256 を表示)。
| 環境 | コマンド |
|---|---|
| Linux / macOS | sha256sum filename (macOS の場合:shasum -a 256 filename) |
| Windows PowerShell | Get-FileHash filename -Algorithm SHA256 |
| Windows CMD | certutil -hashfile filename SHA256 |
コードでのハッシュ化
スクリプトを書くときや API を統合するときに役立つ、4 つの一般的な言語の最小限の例です。
async function sha256Hex(data) {
const bytes = typeof data === "string"
? new TextEncoder().encode(data)
: new Uint8Array(data);
const digest = await crypto.subtle.digest("SHA-256", bytes);
return [...new Uint8Array(digest)]
.map((b) => b.toString(16).padStart(2, "0"))
.join("");
}
// Text
console.log(await sha256Hex("hello"));
// Files: digest accepts an ArrayBuffer directly
const buf = await file.arrayBuffer();
console.log(await sha256Hex(buf));
ブラウザのネイティブ Web Crypto は SHA 系のみをサポートし、HTTPS または localhost が必要です。MD5 はサードパーティのライブラリが必要です。
echo hash('sha256', 'hello'); // 64 hex characters
echo md5('hello'); // same as hash('md5', 'hello')
// Streamed: hashes the file without loading it into memory
echo hash_file('sha256', 'setup.exe');
hash() と hash_file() は md5、sha1、sha256、sha512 などをサポートします。ファイルのハッシュ化はストリーミング処理されるため、メモリの使用量が少なくて済みます。
import hashlib
print(hashlib.sha256(b"hello").hexdigest())
print(hashlib.md5(b"hello").hexdigest())
# Large files: streamed, low memory (Python 3.11+)
with open("setup.exe", "rb") as f:
print(hashlib.file_digest(f, "sha256").hexdigest())
hashlib 標準ライブラリはインストール不要です。大きなファイルのストリーミングハッシュには file_digest() を使用します(Python 3.11+)。
use sha2::{Digest, Sha256};
use md5::Md5;
// Text
println!("{:x}", Sha256::digest(b"hello"));
println!("{:x}", Md5::digest(b"hello"));
// Large files: streamed, low memory
let mut file = std::fs::File::open("setup.exe")?;
let mut hasher = Sha256::new();
std::io::copy(&mut file, &mut hasher)?;
println!("{:x}", hasher.finalize());
ハッシュ化は標準ライブラリに含まれていません。Cargo.toml で RustCrypto の sha2 と md-5 クレートを追加する必要があります。std 機能を有効にすると、io::copy がファイルをハッシャーにストリーミングします。
FAQ
テキストやファイルはアップロードされていますか?
いいえ。すべてブラウザ内で計算されます:SHAファミリーは組み込みのWeb Crypto APIを使用し、MD5はページ内のJavaScriptで実行されます。このツールはネットワークから切断された状態でも機能します。機密性の高いファイルで試してみてください。
空のテキストにもハッシュがあるのはなぜですか?
ハッシュアルゴリズムは0バイトでも一意の固定出力を定義します。空文字列のMD5はd41d8cd98f00b204e9800998ecf8427eで、SHA-256はe3b0c442から始まります。このツールは入力が空の場合に結果を単に非表示にするだけなので、誤ってコピーすることはありません。
どんなサイズのファイルでもハッシュできますか?
ブラウザの使用可能なメモリに依存しますが、数百MBのインストーラーやディスクイメージであれば通常問題ありません。ファイルはメモリに一括読み込みされるため、数GBのファイルの場合はコマンドラインツール(sha256sum、certutil)を使用することを推奨します。
ハッシュの長さが異なるのはなぜですか?
長さはアルゴリズムによって決まります。MD5は32文字、SHA-1は40文字、SHA-256は64文字、SHA-512は128文字の16進数です。1バイトあたり2文字の16進数で、長さは入力のサイズとは無関係です。1バイトのファイルも数GBのファイルも、SHA-256では64文字の出力になります。
これをAPI署名の作成に使用できますか?
はい。多くのオープンプラットフォームは「パラメータ+秘密鍵」をMD5またはSHA-256でハッシュしてリクエストに署名します。このツールはデバッグ時に署名値を確認するのに適していますが、本番環境ではサーバー側の言語ライブラリでハッシュを計算し、秘密鍵をフロントエンドコードに埋め込んではいけません。
このツールでチェックサムを比較するにはどうすればよいですか?
「ファイルチェックサム」タブに切り替えてファイルをドロップし、公式サイトのチェックサムを結果欄の上のボックスに貼り付けます。ツールは長さで自動的にアルゴリズムを検出します(MD5:32文字、SHA-1:40文字、SHA-256:64文字、SHA-384:96文字、SHA-512:128文字)。一致した行は一致する場合は「合格」とともに緑色に、不一致の場合は赤色になります。大文字小文字、前後のスペース、改行は自動的に無視されます。
関連ツール
その他のエンコード、暗号、パスワードツールです。