[ホーム] -
[Windows 2008 FAQ 一覧] - [メッセージダイジェストに関して | MD5 と SHA-1 の違]
(1)メッセージダイジェスト
メッセージダイジェストとは原文からある計算を実施し固定長の長さの文字列を生成する手法のことを言います。一般的にこの文字列のことを「ハッシュ値」(あるいは「チェックサム」)と呼びます。例えばインターネットからファイルをダウンロードする場合、ダウンロードしたメッセージダイジェストと元ファイルのメッセージダイジェスト(通常はダウンロード元が公開している)を比較してダウンロードしたファイルが破損していないことを確認します。
「ハッシュ値」から原文を復元することはできません。(メッセージダイジェスト関数は一方向関数であり不可逆関数であるため)。また異なる原文から同一の「ハッシュ値」が生成される可能性はほとんどありません。異なる原文から同一の「ハッシュ値」を生成する方法もほぼ不可能です。
(2)MD5, SHA-1, SHA-2 の違い
MD5 ・・・長さは128ビットです。異なるデータから同一の「ハッシュ値」が生成可能であることが判明しておりセキュリティ上問題があります。ただしダウンロードファイルの整合性確認等などでは一般的に良く使われています。
SHA-1 ・・・長さは160ビットです。セキュリティ上の理由より使用は推奨されていません。SHAはSecure Hash Algorithm の略です。
SHA-2 ・・・長さは224〜512ビットです。2012年現在ではセキュリティが突破される脆弱性は見つかっていません。
(3)実行例
(a) Redhat linux 5.0の場合
MD5のハッシュ計算
# md5sum downloaded.lzh
42b9878abdaa6f6ca1b1374423da86ef downloaded.lzh
SHA-1のハッシュ計算
# sha1sum downloaded.lzh
05cca3f99b75e3b056f6467de4b5b056553e90ff downloaded.lzh
SHA-2のハッシュ計算
# gpg --print-md SHA256 downloaded.lzh
downloaded.lzh: C866E927 D1497E5B B2F5407C 010BB89F 3975089C 1E507284 4AE47888
56AEF567
(b)Windows の場合
MD5のハッシュ計算
http://tooljp.com/qa/29DA43AF939BBAF949257606004CD2DF.html
C:\>fciv -md5 ReadMe.txt
//
// File Checksum Integrity Verifier version 2.05.
//
79ac8d043dc8739f661c45cc33fc07ac readme.txt
C:\>fciv -sha1 ReadMe.txt
//
// File Checksum Integrity Verifier version 2.05.
//
2fe398f1ebced166087362626241b95efeaab407 readme.txt