私は端末からファイルのmd5sumハッシュをチェックできます、
$ md5sum my_sensitive_file
8dad53cfc973c59864b8318263737462 my_sensitive_file
しかし、難しいのは、ハッシュ値と正確な値を比較することです。
多数のファイルについて、32文字の出力を元の/正確なハッシュ値と人間が比較することは困難です。まず第一に、仕事は非常に単調であり、大きな範囲のエラーがあります。
できればCLIで比較プロセスを自動化することは可能ですか?
たとえば、test_binary
というファイルがあります。
ファイルテストのMD5合計はef7ab26f9a3b2cbd35aa3e7e69aad86c
です
これをテストするには、これを自動的に実行します:
$ md5sum -c <<<"ef7ab26f9a3b2cbd35aa3e7e69aad86c *path/to/file/test_binary"
test_binary: OK
または
$ echo "595f44fec1e92a71d3e9e77456ba80d1 filetohashA.txt" | md5sum -c -
男からの引用
-c, --check
read MD5 sums from the FILEs and check them
ウィキからの引用
注:比較する各md5sum値とファイル名の間には2つのスペースが必要です。そうしないと、「適切にフォーマットされたMD5チェックサム行が見つかりません」というエラーが発生します。
また、ファイルからmd5ハッシュを読み取ることができます
$ md5sum -c md5sum_formatted_file.txt
次の形式のファイルが必要です。
<md5sum_checksum><space><space><file_name>
MD5合計ハッシュ後の*
および<space>
について。人にはほとんど注意がありません:
When checking, the
input should be a former output of this program. The default mode is
to print a line with checksum, a character indicating input mode ('*'
for binary, space for text), and name for each FILE.
ここに stackoverflow へのリンクがあります。ここで、質問に対する答えが見つかりました。なぜbinary
ファイルとtext
ファイルを区別する必要があるのか、です。
1つの可能性は、ユーティリティ cfv を使用することです
Sudo apt-get install cfv
CFVは、多くの種類のハッシュ、およびテストとハッシュファイルの作成の両方をサポートしています。
# List the files
$ ls
test.c
# Create a hash file
$ cfv -tmd5 -C
temp.md5: 1 files, 1 OK. 0.001 seconds, 302.7K/s
# Test the hash file
$ cfv -tmd5 -T
temp.md5: 1 files, 1 OK. 0.001 seconds, 345.1K/s
# Display the hash file
$ cat *.md5
636564b0b10b153219d6e0dfa917d1e3 *test.c
はい、このコマンドにはアスタリスク*
が必要です。この例を見てください。
これはバイナリファイルです。正しいmd5sum値はexampleofcorrectmd5value00000000
(32桁の16進文字)としましょう
[root@Linux update]# ls -lh
total 137M
-rw-r--r-- 1 root root 137M Nov 5 13:01 binary-file.run.tgz
[root@Linux update]#
-c、-check
ファイルからMD5サムを読み取り、チェックします
Md5sumの値がバイナリファイルと一致する場合、次の出力が得られます。
[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000" *binary-file.run.tgz"
binary-file.run.tgz: OK
[root@Linux ~]#
そして、これはmd5sumの値が一致しないときです
[root@Linux update]# md5sum -c <<< "exampleofwrongmd5value0000000000 *binary-file.run.tgz"
binary-file.run.tgz: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@Linux update]#
アスタリスク*
がないと、md5値が正しいと考えられても、次のエラーメッセージが表示されます。
[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000 binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
また、md5sumに32個の16進文字が含まれていない場合も、同じエラーメッセージが表示されます。この例では、31文字のみです。
[root@Linux ~]# md5sum -c <<< "exampleofmd5valuelessthan32char *binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
多くのファイルの解決策
多くのファイルがあり、プロセスを自動化する場合は、次の手順を実行できます。
user@Ubuntu:~$ ls -lh
total 12K
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-a
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-b
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-c
user@Ubuntu:~$
各ファイルのmd5sumを生成し、md5sum.txtに保存します
user@Ubuntu:~$ md5sum * | tee md5sum.txt
0bee89b07a24ae27c83fc3d5951213c1 file-a
1b2297c171a9a450d184871ccf6c9ad4 file-b
7f4d13d9b0b6ac086fd68637067435c5 file-c
user@Ubuntu:~$
すべてのファイルのmd5sumを確認するには、次のコマンドを使用します。
user@Ubuntu:~$ md5sum -c md5sum.txt
file-a: OK
file-b: OK
file-c: OK
user@Ubuntu:~$
これは、md5sumの値がファイルと一致しない場合の例です。この場合、file-b
コンテンツを変更します
user@Ubuntu:~$ echo "new data" > file-b
user@Ubuntu:~$
これがエラーメッセージです。お役に立てれば。
user@Ubuntu:~$ md5sum -c md5sum.txt
file-a: OK
file-b: FAILED
file-c: OK
md5sum: WARNING: 1 computed checksum did NOT match
user@Ubuntu:~$