任意のテキストからMD5、SHA-1、SHA-256、SHA-512ハッシュを生成。SHAハッシュにはWeb Crypto APIを使用し、すべてがブラウザ内で実行され、データは端末から外部へ出ません。
ハッシュ関数は、任意の長さの入力(または「メッセージ」)を受け取り、ハッシュ値、ダイジェスト、またはチェックサムと呼ばれる固定サイズの出力を生成する数学的アルゴリズムです。暗号学的ハッシュ関数の主な特性は、決定性(同じ入力は常に同じ出力を生成する)、効率性(高速に計算できる)、事前像抵抗性(ハッシュから元の入力を見つけることが計算上不可能)、衝突耐性(異なる入力が同じハッシュになることが極めて困難)です。これらの特性により、ハッシュ関数はコンピュータセキュリティ、データ整合性検証、ソフトウェア工学の基礎的構成要素となります。
衝突は、2つの異なる入力が同じハッシュ出力を生成する場合に発生します。出力空間が有限であるため、理論的にはすべてのハッシュ関数で衝突は避けられませんが、セキュアなハッシュ関数では衝突を見つけることが計算上不可能です。MD5(128ビット出力)は2004年に研究者が実用的な衝突攻撃を実証し、以降セキュリティ目的での使用は推奨されません。SHA-1(160ビット)は2005年に理論的に破られ、2017年にGoogleのSHAttered攻撃で実証されました。SHA-2ファミリー(SHA-256 と SHA-512)は実用的な攻撃が知られておらず安全です。暗号的なセキュリティが必要な新しい用途では、SHA-256 または SHA-512 を推奨します。MD5 と SHA-1 はチェックサムやハッシュテーブルなど、セキュリティ以外の用途には依然として使用可能です。
ハッシュ関数はソフトウェア開発やセキュリティにおいて多様な目的で利用されます。パスワード保存は、ハッシュ化(ソルトとbcryptやArgon2などの専用アルゴリズムを併用)により、平文パスワードの代わりにダイジェストを保存します。ファイル整合性検証はハッシュチェックサムを比較し、ダウンロード中のファイル破損や改ざんを検出します。デジタル署名はまずメッセージをハッシュ化し、ハッシュを秘密鍵で暗号化して認証します。データ重複排除はハッシュを用いてストレージシステム内の同一データブロックを識別します。Git バージョン管理はSHA-1ハッシュでリポジトリ内のすべてのコミット、ツリー、ブロブオブジェクトを識別します。ブロックチェーン技術はSHA-256ハッシュでブロックを連結し、各ブロックは前ブロックのハッシュを含みます。