無料ハッシュジェネレーター
MD5、SHA-1、SHA-256、SHA-384、SHA-512のハッシュを生成します。
結果
ハッシュ関数について
暗号ハッシュ関数は任意のサイズの入力を取り、フィンガープリント、ダイジェスト、またはハッシュと呼ばれる固定サイズの出力を生成します。同じ入力は常に同じハッシュを生成します、入力の1ビットの変更は劇的に異なるハッシュを生成します(「アバランシェ効果」)、関数は計算的に逆転不可能です、ハッシュが与えられた場合、それを生成した入力を実用的に見つけることはできません。3つの抵抗特性が関数を「暗号」にします:preimage 抵抗(ハッシュ h が与えられた場合、hash(m) = h となる入力 m を見つけることが実行不可能)、second preimage 抵抗(m1 が与えられた場合、同じハッシュを持つ別の m2 を見つけることが実行不可能)、collision 抵抗(同じハッシュを持つ2つの異なる入力を見つけることが実行不可能)。collision 抵抗を失った関数は一部の用途(ファイル整合性)では依然として安全な可能性があるが他(デジタル署名)では安全ではない。MD5 と SHA-1 はちょうどそのカテゴリにあります、それらの collision は破られていますが preimage は依然として保持されています。
MD5、SHA-1、SHA-2、SHA-3 の簡単な歴史
MD2 / MD4 / MD5 は MIT と RSA Data Security の Ron Rivest の作品です。MD2 は1989年に公開されました、MD4 は1990年、MD5 は1991年に公開され、1992年4月に RFC 1321 として標準化されました。MD5 は十年間にわたり支配的なハッシュで、ダウンロードチェックサム、パスワードストレージ、ファイル重複排除、コンテンツアドレス可能システムのデフォルトでした。最初の警鐘は1995年に鳴りました、Hans Dobbertin が MD5 の前身である MD4 に対する全ラウンド衝突攻撃を発表したのです。完全な MD5 で最初の実用的な衝突は2004年8月、Wang と Yu が衝突する2つの 128 バイトメッセージを発表したときに到来しました。Vlastimil Klima は2006年、市販ハードウェア上で MD5 衝突探索を数時間から数秒に高速化しました。Marc Stevens は TU Eindhoven と EPFL の研究者と協力し、2008年12月の 25C3 で MD5 の選択プレフィックス衝突を実演しました、MD5 署名された偽造 RapidSSL CA 証明書を生成して。Microsoft Update 証明書を偽造するために MD5 衝突を使用した2012年の Flame マルウェアの時までに、MD5 はあらゆるセキュリティ機微な目的で完全に破られていました。
SHA("Secure Hash Algorithm")は米国 NSA のファミリーです。SHA-0 は1993年5月に FIPS 180 として公開され、未指定の設計欠陥のために同じ年に取り下げられました。SHA-1 は1995年4月に FIPS 180-1 の下で続き、メッセージスケジュールの1ビット変更を伴い、NSA は決して公に説明しませんでした。SHA-1 は1990年代後半と2000年代のデフォルトハッシュになり、Git のコミットハッシュ、SSL/TLS 証明書、ほぼすべての署名スキームで使用されました。最初の理論的衝突攻撃は2005年に到来しました(Wang、Yin、Yu)、freestart 衝突は2015年(Stevens、Karpman、Peyrin)、最初の完全な SHA-1 衝突は2017年2月23日に「SHAttered」として配信されました(Stevens、Bursztein、Karpman、Albertini、Markov)、同じ SHA-1 ハッシュを持つ2つの異なる PDF ファイルを生成しました。2020年1月、選択プレフィックスを持つ「SHA-1 is a Shambles」攻撃(Leurent と Peyrin、GPU レンタル総費用約 USD 45,000)が証明書レベルの偽造を手頃にし、Git プロジェクトが2018年からすでに計画していた SHA-256 への移行を加速させました。SHA-1 は今や NIST によってデジタル署名と証明書のために正式に非推奨です。
SHA-2 は SHA-1 を置き換えたファミリーです:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256、2002年8月の FIPS 180-2 で公開されました。SHA-2 は防御的設計でした、より大きな出力、より多くのラウンド、より広い内部状態、23年後、それは依然として破られていません。SHA-256 はデジタル署名、証明書、JWT、Bitcoin ブロックハッシュ、コンテンツアドレス可能ストレージ、ほとんどのファイル整合性チェックの現代のデフォルトです。SHA-3 は根本的に異なる設計で、Bertoni、Daemen、Peeters、Van Assche によるスポンジ構築 Keccak、2007年に開かれた5年間の NIST コンペで選ばれ、Keccak が2012年10月に勝利、2015年8月に FIPS 202 として公開されました。SHA-3 は SHA-2 の置き換えではなく(SHA-2 はまだ安全)、完全に異なる内部構造を持つ防御的代替であり、SHA-2 の将来の暗号解析的破綻は必ずしも SHA-3 に影響しません。このツールは SHA-1、SHA-256、SHA-384、SHA-512(Web Crypto API がサポートするセット)に加えて MD5(JavaScript 実装を介して、Web Crypto API が意図的に MD5 を省略するため)を生成します。
アルゴリズム比較
| アルゴリズム | 出力 | セキュリティ |
|---|---|---|
| MD5 | 128-bit (32 hex chars) | 破綻 · セキュリティ用途には不適 |
| SHA-1 | 160-bit (40 hex chars) | 脆弱 · 非推奨 |
| SHA-256 | 256-bit (64 hex chars) | 強力 · 推奨 |
| SHA-384 | 384-bit (96 hex chars) | 強力 |
| SHA-512 | 512-bit (128 hex chars) | 強力 |
暗号ハッシュが現れる場所
- ファイル整合性 / チェックサム。 Linux ディストリビューションミラーは ISO ダウンロードと一緒に SHA-256 ハッシュ(歴史的には MD5/SHA-1)を公開します、ユーザーはダウンロードされたファイルのハッシュを計算し、公開された値と比較します。違いはダウンロードが破損したまたは改ざんされたことを意味します。
shasum、sha256sum、md5sumは標準 Unix ツールです。 - パスワードストレージ、しかし生のハッシュとして決して。
SHA-256(パスワード)をそのまま保存することは危険です、レインボーテーブル(プリ計算された(パスワード → ハッシュ)マップ)は生のハッシュをミリ秒で逆転可能にするからです。正しいパターンはユーザーごとのソルトと調整可能なコスト係数を持つパスワードハッシュ関数(KDF)です:Argon2id(RFC 9106、2021、現代の推奨)、scrypt(RFC 7914、Percival 2009)、または bcrypt(Provos と Mazières、USENIX 1999)。3つすべてがソルト(同一のパスワードが異なる保存されたハッシュを生成するように)と意図的に高価な計算(ブルートフォース攻撃がハードウェアコストによって制限されるように)を組み合わせます。このツールは生のハッシュを計算します、多くのことに有用ですが、単独でのパスワードストレージには適していません。 - デジタル署名。 人々はデータではなくハッシュに署名します、データは効率的に署名するには長すぎます。RSA、DSA、ECDSA、EdDSA はすべてメッセージのハッシュに署名します。使用されるハッシュ関数は collision 抵抗を持たなければなりません(そうでなければ攻撃者は衝突するメッセージを置換できる)、これがまさに MD5 と SHA-1 が署名のために非推奨である理由です。
- Git のコンテンツアドレス可能ストレージ。 各 Git オブジェクト(blob、tree、commit、tag)はそのコンテンツの SHA-1 によって識別されます。Linus Torvalds の2005年の設計選択は、SHA-1 衝突の破綻によって動機付けられた SHA-256 への複数年の移行中です。Git for Windows と公式 Git の両方が SHA-256 サポートを提供します、本番マイグレーションは段階的です。
- Bitcoin と Ethereum。 Bitcoin はブロックハッシュとトランザクション識別子に二重 SHA-256 を使用します(ハッシュ関数は Bitcoin マイニングコストを支配します、SHA-256 を高速に計算するためだけに ASIC が存在します)。Ethereum は Keccak-256 を使用します(NIST 標準化調整前の元の Keccak、時には「パディング変更を引いた SHA-3」と呼ばれる)。
- JWT 署名検証。 JSON Web Token は通常 HMAC-SHA-256(JWT 仕様でアルゴリズム名「HS256」)または SHA-256 ハッシュ上の RSA/ECDSA で署名されます。署名は受信者がトークンが本当に発行者から来てかつ改ざんされていないことを検証することを許します。
- Subresource Integrity (SRI)。
<script>と<link>タグのintegrity="sha256-..."属性は、CDN ホストされたスクリプトを実行する前にブラウザが変更されていないことを検証することを許します、侵害された CDN に対する防御。 - API リクエスト署名。 AWS Signature Version 4 はユーザーのシークレットアクセスキーで各 API リクエストに署名するために HMAC-SHA-256 を使用します。これは秘密をネットワークに送信せずにリクエストを認証し、タイムスタンプを介してリプレイ攻撃を回避します。
Collision 破綻 vs preimage 破綻、なぜ MD5 がまだ使われるか
頻繁な混乱:MD5 が「破られた」のなら、なぜ md5sum がまだあらゆる Linux ディストロにあるのか? 答えは collision 抵抗(MD5 で破られた)と preimage 抵抗(MD5 でまだ無傷)の区別です。collision 攻撃は攻撃者が同じハッシュを持つ2つの異なる入力を構築することを許します、これはデジタル署名(攻撃者が衝突するペアを作成し、1つに署名させ、もう1つを置換できる)と関数が特定の入力に結びつくと想定されるあらゆるアプリケーションで重要です。preimage 攻撃は逆に、ハッシュから元の入力を回復することを攻撃者に許します、これがダウンロードチェックサム、パスワードハッシュ、コンテンツアドレス可能識別子を実際に破るものです。MD5 の preimage 抵抗は破られていません、公開されている最良の preimage 攻撃は依然として理論的な 2128 の境界に近く、現存するあるいは予想されるあらゆるハードウェアで計算的に実行不可能です。だから MD5(と SHA-1)は依然として正当です:ファイル整合性検証で公開されたハッシュのソースを信頼するとき(ファイルを置換できる攻撃者はおそらくハッシュも置換できるので、脅威モデルは「故意の改ざん」ではなく「偶発的な破損」)、両端を制御するキャッシュキーと重複排除、HMAC 構築(HMAC の構造が MD5 の collision 弱点に対して堅牢なので HMAC-MD5 は依然として安全、新しいコードには HMAC-SHA-256 が好まれるが)。MD5 が置き換えられなければならない場所:デジタル署名、証明書ハッシュ、攻撃者が入力を作成できるあらゆる場所。
Web Crypto API と MD5 の意図的な省略
現代のブラウザは crypto.subtle.digest(algorithm, data) を介してハッシュを公開します、ハッシュを ArrayBuffer として返す非同期関数。サポートされるアルゴリズム:SHA-1、SHA-256、SHA-384、SHA-512。何がないかに注意:MD5 は意図的に省略されています。W3C Web Crypto Working Group は MD5 を除外するという明示的な選択をしました、ブラウザでの MD5 の使用はレガシー(ポリフィルでよりよく処理される)または間違い(容易にしないべき)のいずれかと推論しました。このツールの MD5 サポートはページに埋め込まれた小さな JavaScript 実装(~10 KB)から来ます、他のすべて(SHA-1、SHA-256、SHA-384、SHA-512、すべての HMAC バリアント)はネイティブ速度処理のために Web Crypto を介して行きます。Web Crypto API はセキュアコンテキスト(HTTPS または localhost)でのみ利用可能、このツールをプレーン HTTP で開くと SHA ハッシングが静かに無効になります。
出力フォーマット:Hex、Base64、Base32
ハッシュは本質的にバイナリです、256 ビットハッシュは 32 バイトの不透明データです。それらを表示または転送するために、テキストにエンコードします。Hex (Base16) は最も一般的なエンコーディングです:各バイトが2つの hex 文字になるので、SHA-256 出力は 64 hex 文字です。普遍的、読みやすい、サイズが2倍になる。Base64 はバイトをより密にパックします(3 バイト → 4 文字)、Base64 の SHA-256 は 44 文字(パディング付き)または 43(なし)。JWT(署名は Base64URL エンコード)、SRI integrity 属性、コンパクトさが重要な場所で使用されます。Base32(RFC 4648)は視覚的に曖昧な文字を除外する32文字を使用(0/O、1/I/L 区別なし)、TOTP 秘密鍵、ULID、onion アドレスで使用されます。このツールはデフォルトで hex を生成します、すべての他のツールが理解する普遍的なフォーマット。
HMAC、認証用のキー付きハッシング
HMAC (Hash-based Message Authentication Code) は RFC 2104(Krawczyk、Bellare、Canetti、1997年2月)で定義された構築で、任意の暗号ハッシュ関数をキー付きメッセージ認証コードに変えます。構築は HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)) です、K' は秘密 K から派生したキー、opad/ipad は固定の XOR パッドです。構造は基礎となるハッシュが安全である限り証明可能に安全であり、特に基礎となるハッシュが弱い collision 抵抗を持つときも安全のままです(これが HMAC-MD5 がまだ安全と見なされる理由、SHA-1 collision 破綻後でも HMAC-SHA1 が TLS で OK な理由)。HMAC には3つの主要な使用があります:API リクエスト署名(AWS Signature v4、GitHub webhook、Stripe webhook)、受信者はリクエストが秘密の所有者から来たことを検証します;JWT 整合性(HS256 = HMAC-SHA-256);パスワードベースのキー導出(PBKDF2 は内部で HMAC を使用)。このツールの HMAC モードは秘密鍵を取り、そのキーの下で入力の HMAC を生成します。
正直な範囲、このツールが行うことと行わないこと
このツールはテキストまたはファイル入力の生の暗号ハッシュを計算します。有用な用途:公開されたチェックサムに対するファイルダウンロードの検証、コンテンツアドレス可能識別子の生成、API デバッグのための HMAC 値の計算、ファイルの2つのコピーの整合性比較、特定の入力が何にハッシュするかを学ぶ。有用ではない用途:パスワードストレージ(Argon2id、scrypt、または bcrypt のような実際のパスワードハッシュ関数を適切なソルトとコスト係数で使用)、ハッシュの逆転(これがハッシュ関数の全体のアイデアで、設計上不可能)、SHA-3 / Keccak ハッシュの生成(このツールは現在 SHA-2 ファミリーの SHA-1、SHA-256、SHA-384、SHA-512 に加えて MD5 を生成します、SHA-3 は将来の機能リスト上)、BLAKE2 または BLAKE3 ハッシュの生成。BLAKE3(コンテンツアドレス可能ストレージのための現代の高スループットハッシュ)には、専用 CLI を使用してください、パスワードストレージにはアプリケーションの bcrypt/scrypt/Argon2id ライブラリを直接使用してください。
プライバシー、なぜブラウザのみがここで重要か
サーバーでファイルをハッシュするには送信が必要です。通常のダウンロード検証では関係ありません、すでにソースを信頼しています。内部ドキュメント、スキャンされた ID ドキュメント、進行中のインターフェーススクリーンショット、または見知らぬ人のハードドライブにコピーされたくないファイルをハッシュするには、サーバー側ハッシングは漏洩です。このツールは File API を介してブラウザでファイルを直接読み込み、ローカルでハッシュします、何もデバイスを離れません。Hash をクリックする間に DevTools の Network タブを開いて確認するか、読み込み後にページをオフライン(機内モード)にしてツールがまだ動作することを確認してください。Web Crypto API は HTTPS を要求しますが、ランタイムにネットワークアクセスを要求しません。
よくある質問
MD5が破綻しているなら何に使われるのですか?
MD5は、セキュリティ以外の目的では現在も広く使用されています:ファイル整合性チェック(ダウンロードの検証)、重複排除、キャッシュキー、チェックサムなどです。パスワードハッシュや電子署名には決して使用すべきではありません。
ハッシュを逆にして元のテキストを取得できますか?
いいえ。ハッシュ関数は一方向性になるように設計されています。ただし、攻撃者は事前計算テーブル(レインボーテーブル)を使用して一般的なハッシュを検索します。そのため、パスワードは生のSHA-256ではなく、bcryptのようなソルト付きの低速ハッシュ関数でハッシュ化する必要があります。
ファイルをハッシュ化するときにアップロードされますか?
いいえ。ファイルはFile APIを使用してブラウザ内で直接読み込まれ、Web Crypto API(SHAの場合)または純粋なJavaScript実装(MD5の場合)を使用してローカルでハッシュ化されます。サーバーには何も送信されません。
SHA-256 と SHA-3 の違いは何ですか?
SHA-256 は SHA-2 ファミリー(FIPS 180-2、2002年8月)の一部、Merkle-Damgård 構築、NSA 設計。SHA-3(FIPS 202、2015年8月)は Keccak ファミリー、スポンジ構築、Bertoni、Daemen、Peeters、Van Assche 設計、公開 NIST コンペで選ばれました。SHA-3 は SHA-2 の置き換えではなく(SHA-2 はまだ安全)、根本的に異なる内部構造を持つ防御的代替であり、SHA-2 の仮定的な将来の破綻が必ずしも SHA-3 に影響しません。2026年の新しいアプリケーションには、SHA-256 が依然として正しいデフォルト、SHA-3 は Ethereum とポスト量子スキームでますます使用されます。このツールは現在 SHA-2(SHA-1 / 256 / 384 / 512)をサポート、SHA-3 は将来の機能リスト上。
HMAC とは何で、いつ必要ですか?
HMAC(Hash-based Message Authentication Code、RFC 2104、1997)はメッセージが共有秘密を知る誰かによって作成されたことを証明するキー付きハッシング構築です。リクエストが正しい当事者から来たことを検証するたびに必要です、GitHub webhook 署名検証(秘密は webhook 署名鍵)、Stripe webhook 署名、AWS API リクエスト署名(Signature v4 は HMAC-SHA-256)、または JWT 署名(HS256 = HMAC-SHA-256)。HMAC は基礎となるハッシュが弱い collision 抵抗を持つときも安全のままです、これが HMAC-MD5 がまだ安全と見なされる理由です、しかし HMAC-SHA-256 は新しいコードの現代のデフォルトです。
ハッシュするときファイルがアップロードされますか?
いいえ。ファイルは File API を介してブラウザで直接読み込まれ、ローカルでハッシュされます、SHA ファミリーアルゴリズムには Web Crypto API、MD5 には小さな JavaScript 実装。何もネットワークを横断しません、計算中に DevTools の Network タブを確認するか、読み込み後にページをオフラインにしてください。内部ドキュメント、スキャンされた ID ドキュメント、進行中のインターフェーススクリーンショット、または見知らぬ人のハードドライブにコピーされたくないファイルのハッシングに安全です。
関連ツール
無料Base64エンコーダー&デコーダーオンライン
テキストをBase64にエンコード、またはBase64をテキストに即座にデコード。ファイルからBase64への変換をサポート。無料、サインアップ不要、ブラウザで実行。
無料パスワードジェネレーターオンライン
強力でランダムなパスワードを瞬時に生成。長さをカスタマイズし、大文字、小文字、数字、記号を含めることができます。無料、ブラウザで動作。
無料URLエンコーダー/デコーダー
URLとURIコンポーネントを即座にエンコードまたはデコード。encodeURIとencodeURIComponentメソッドをサポート。無料、プライベート、サインアップ不要。