ハッシュ出力長の比較

MD5、SHA-1、SHA-256、SHA-384、SHA-512の出力長を比較。ダイジェストサイズがセキュリティ、ストレージ、パフォーマンスに与える影響を理解します。

General

詳細な説明

ハッシュアルゴリズムごとに異なる長さの出力を生成し、この長さがセキュリティ、ストレージ要件、パフォーマンスに直接影響します。

出力長の一覧:

MD5:128ビット = 16バイト = 32文字の16進数。SHA-1:160ビット = 20バイト = 40文字の16進数。SHA-224:224ビット = 28バイト = 56文字の16進数。SHA-256:256ビット = 32バイト = 64文字の16進数。SHA-384:384ビット = 48バイト = 96文字の16進数。SHA-512:512ビット = 64バイト = 128文字の16進数。SHA-512/256:256ビット = 32バイト = 64文字の16進数(切り詰めSHA-512)。SHA-3-256:256ビット = 32バイト = 64文字の16進数。

長さとセキュリティの関係:

ハッシュ関数の衝突耐性は最大で出力長の半分のビット数です(誕生日のパラドックスによる)。MD5の128ビット出力は最大64ビットの衝突耐性(実際には暗号解析攻撃によりはるかに低い)。SHA-256の256ビット出力は128ビットの衝突耐性を提供し、長期的セキュリティの最低基準とされています。SHA-512は256ビットの衝突耐性を提供し、量子コンピューティングを含む将来の進歩に対するマージンがあります。

ストレージと帯域幅への影響:

SHA-256ハッシュの保存にはMD5の正確に2倍のスペースが必要です(32バイト vs 16バイト、または64 vs 32文字の16進数)。数百万レコードのデータベースではこの差が大きくなります。ハッシュがURL、ヘッダー、APIレスポンスで送信される場合、短いハッシュは帯域幅を削減します。しかし、セキュリティ侵害のコストと比べればストレージと帯域幅は安価なので、常にセキュリティを優先すべきです。

エンコード形式:

ハッシュは通常16進数(1バイトあたり2文字)またはBase64(3バイトあたり4文字)で表されます。16進数でSHA-256は64文字、Base64では44文字(パディング含む)です。Base64エンコーディングは16進数と比べてストレージを約33%削減できます。

適切な長さの選択:

セキュリティ用途には256ビット以上の出力(SHA-256以上)を使用してください。セキュリティ以外のコンパクトな識別子が必要な場合は、短いハッシュやSHA-256の切り詰めも許容されますが、予想データ量に対する衝突確率を文書化してください。

ユースケース

この比較は、開発者がストレージスキーマの計画、エンコード形式の選択、異なるハッシュダイジェストサイズのセキュリティ上の影響の理解に役立ちます。

Try It — Hash Generator

フルツールを開く