LinuxでMD5チェックサムを使用してファイルを生成および検証する方法を学ぶ


チェックサムは、データ内の正しい数字の合計として機能する数字であり、後で保存または送信中にデータのエラーを検出するために使用できます。 MD5(メッセージダイジェスト5)の合計は、Linuxファイルシステム内のファイルまたは文字列を検証するためのチェックサムとして使用できます。

MD5 Sumは、特定のファイルに対してMD5アルゴリズムを実行した結果の128ビットの文字列(数字と文字)です。 MD5アルゴリズムは、ハッシュ値と呼ばれる128ビットのメッセージダイジェストを生成する一般的なハッシュ関数であり、特定のファイル用に生成すると、生成された回数に関係なく、どのマシンでもまったく変更されません。

通常、同じ文字列になる2つの異なるファイルを見つけることは非常に困難です。したがって、md5sumを使用して、ダウンロードしたファイルまたはISOがリモートファイルまたはISOのビットごとのコピーであると判断することにより、デジタルデータの整合性を確認できます。

Linuxでは、md5sumプログラムは、ファイルのMD5ハッシュ値を計算してチェックします。これはGNUCore Utilitiesパッケージの構成要素であるため、すべてではないにしてもほとんどのLinuxディストリビューションにプリインストールされています。

以下のgroups.cvsとして保存されている/etc/group の内容を見てください。

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,aaronkilik
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:aaronkilik
floppy:x:25:
tape:x:26:
sudo:x:27:aaronkilik
audio:x:29:pulse
dip:x:30:aaronkilik

以下のmd5sumsコマンドは、次のようにファイルのハッシュ値を生成します。

$ md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

最初の行 root:x:0:を削除してファイルの内容を変更してから、もう一度コマンドを実行する場合は、ハッシュ値を確認してください。

$ md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

ハッシュ値が変更され、ファイルの内容が変更されたことを示しています。

ここで、ファイルの最初の行 root:x:0:を元に戻し、名前をgroup_file.txtに変更し、以下のコマンドを実行してハッシュ値を再度生成します。

$ md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

上記の出力から、ファイルの名前が変更された場合でも、ハッシュ値は元のコンテンツと同じです。

重要:md5 sumsは、ファイル名ではなく、ファイルの内容のみを検証/処理します。

ファイルgroups_list.txtはgroups.csvの複製であるため、次のように同時にファイルのハッシュ値を生成してみてください。

両方のハッシュ値が等しいことがわかります。これは、内容がまったく同じであるためです。

$ md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

ファイルのハッシュ値をテキストファイルにリダイレクトして保存し、他のユーザーと共有することができます。上記の2つのファイルの場合、以下のコマンドを発行して、生成されたハッシュ値を後で使用するためにテキストファイルにリダイレクトできます。

$ md5sum groups_list.txt  groups.csv > myfiles.md5

チェックサムを作成してからファイルが変更されていないことを確認するには、次のコマンドを実行します。 「OK」と一緒に各ファイルの名前を表示できるはずです。

-c または-check オプションは、md5sumsコマンドにファイルからMD5合計を読み取り、それらをチェックするように指示します。

$ md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

チェックサムを作成した後、ファイルの名前を変更できないことを忘れないでください。そうしないと、新しい名前でファイルを確認しようとすると、「そのようなファイルまたはディレクトリはありません」というエラーが発生します。

例えば:

$ mv groups_list.txt new.txt
$ mv groups.csv file.txt
$ md5sum -c  myfiles.md5
md5sum: groups_list.txt: No such file or directory
groups_list.txt: FAILED open or read
md5sum: groups.csv: No such file or directory
groups.csv: FAILED open or read
md5sum: WARNING: 2 listed files could not be read

この概念は文字列に対しても同様に機能します。以下のコマンドでは、 -n は、末尾の改行を出力しないことを意味します。

$ echo -n "Tecmint How-Tos" | md5sum - 

afc7cb02baab440a6e64de1a5b0d0f1b  -
$ echo -n "Tecmint How-To" | md5sum - 

65136cb527bff5ed8615bd1959b0a248  -

このガイドでは、ファイルのハッシュ値を生成する方法、後でLinuxでファイルの整合性を検証するためのチェックサムを作成する方法を示しました。 MD5アルゴリズムのセキュリティの脆弱性が検出されましたが、MD5ハッシュは、それらを作成したパーティを信頼する場合は特に有用です。

したがって、ファイルの検証は、破損したファイルのダウンロード、保存、または共有を回避するための、システムでのファイル処理の重要な側面です。最後になりましたが、いつものように、下のコメントフォームを使用してサポートを求めてください。この投稿を改善するために、いくつかの重要な提案を行うこともできます。