ウェブサイト検索

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


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

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

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

推奨事項: 進行状況 – Linux でのコマンド (cp、mv、dd、tar など) の進行状況の監視

Linux では、md5sum プログラムがファイルの MD5 ハッシュ値を計算してチェックします。これは GNU Core 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: を削除してファイルの内容を変更し、コマンドを 2 回目に実行する場合は、ハッシュ値を観察してください。

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

ハッシュ値が変更されており、ファイルの内容が変更されたことがわかります。

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

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

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

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

ファイル groups_list.txtgroups.csv の複製であるため、次のようにファイルのハッシュ値を同時に生成してみます。

両方とも同じハッシュ値を持っていることがわかります。これは、それらがまったく同じ内容を持っているためです。

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

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

md5sum groups_list.txt  groups.csv > myfiles.md5

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

推奨読書: Linux のメモリ使用量別上位 15 プロセスを見つける

-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 ハッシュは、特に作成者を信頼できる場合には依然として有用です。

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