Một checksum là một chữ số được sử dụng như một tổng các chữ số đúng trong dữ liệu, có thể được sử dụng sau này để phát hiện lỗi trong dữ liệu trong quá trình lưu trữ hoặc truyền tải. Số MD5 (Message Digest 5) có thể được sử dụng làm checksum để xác minh tệp tin hoặc chuỗi trong hệ thống tập tin Linux.
Số MD5 Sums là chuỗi 128-bit (chữ số và chữ cái) là kết quả từ việc chạy thuật toán MD5 trên một tệp tin cụ thể. Thuật toán MD5 là một hàm băm phổ biến tạo ra giá trị băm (hash value) với độ dài 128-bit, và khi tạo một giá trị băm cho một tệp tin cụ thể, nó không thay đổi trên bất kỳ máy tính nào, dù số lần tạo ra giá trị băm đó có nhiều như thế nào.
Thường thì rất khó để tìm ra hai tệp tin khác nhau nhưng lại cho cùng một chuỗi. Do đó, bạn có thể sử dụng md5sum để kiểm tra tính toàn vẹn của dữ liệu số bằng cách xác định xem một tệp tin hoặc ISO bạn tải về có là một bản sao bit nguyên của tệp tin hoặc ISO từ xa hay không.
Trong Linux, chương trình md5sum tính và kiểm tra giá trị băm MD5 của một tệp tin. Nó là một phần của gói GNU Core Utilities, do đó được cài đặt sẵn trên hầu hết, nếu không phải tất cả các bản phân phối Linux.
Hãy xem nội dung của /etc/group
được lưu dưới dạng groups.cvs dưới đây.
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
Lệnh md5sums dưới đây sẽ tạo ra một giá trị băm cho tệp tin như sau:
$ md5sum groups.csv
bc527343c7ffc103111f3a694b004e2f groups.csv
Khi bạn cố gắng thay đổi nội dung của tệp tin bằng cách xóa dòng đầu tiên, root:x:0:
và sau đó chạy lệnh lần thứ hai, hãy cố gắng quan sát giá trị băm:
$ md5sum groups.csv
46798b5cfca45c46a84b7419f8b74735 groups.csv
Bạn sẽ nhận thấy rằng giá trị băm đã thay đổi, cho thấy nội dung của tệp tin đã được thay đổi.
Bây giờ, hãy đặt lại dòng đầu tiên của tệp tin, root:x:0:
và đổi tên nó thành group_file.txt và chạy lệnh dưới đây để tạo lại giá trị băm của nó:
$ md5sum groups_list.txt
bc527343c7ffc103111f3a694b004e2f groups_list.txt
Từ đầu ra trên, giá trị băm vẫn giống như trước kể cả khi tệp tin đã được đổi tên, với nội dung ban đầu của nó.
Quan trọng: Giá trị băm (md5 sums) chỉ xác minh/hoạt động với nội dung của tệp tin chứ không phải tên của tệp tin.
Tệp tin groups_list.txt là một bản sao của groups.csv, vì vậy, hãy thử tạo giá trị băm của các tệp tin cùng một lúc như sau.
Quý vị sẽ thấy rằng cả hai đều có giá trị băm bằng nhau, điều này là do chúng có cùng nội dung.
$ md5sum groups_list.txt groups.csv
bc527343c7ffc103111f3a694b004e2f groups_list.txt
bc527343c7ffc103111f3a694b004e2f groups.csv
Quý vị có thể chuyển hướng giá trị băm của một tệp tin vào một tệp tin văn bản và lưu trữ, chia sẻ chúng với người khác. Đối với hai tệp tin trên, quý vị có thể sử dụng lệnh dưới đây để chuyển hướng giá trị băm tạo ra vào một tệp tin văn bản cho việc sử dụng sau này:
$ md5sum groups_list.txt groups.csv > myfiles.md5
Để kiểm tra rằng các tệp tin không bị sửa đổi kể từ khi quý vị tạo giá trị băm, hãy chạy lệnh sau. Quý vị sẽ có thể xem tên của mỗi tệp tin cùng với "OK".
Đề xuất đọc: Tìm 15 tiến trình tiêu tốn bộ nhớ nhiều nhất trên Linux
Tùy chọn -c
hoặc --check
cho biết lệnh md5sums đọc các giá trị băm MD5 từ các tệp tin và kiểm tra chúng.
$ md5sum -c myfiles.md5
groups_list.txt: OK
groups.csv: OK
Hãy nhớ rằng sau khi tạo giá trị băm, quý vị không thể đổi tên tệp tin nếu không sẽ nhận một lỗi "No such file or directory" khi cố gắng kiểm tra tệp tin với tên mới.
Ví dụ:
$ mv groups_list.txt new.txt
$ mv groups.csv file.txt
$ md5sum -c myfiles.md5
Thông báo lỗi
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
Khái niệm này cũng áp dụng cho các chuỗi tương tự nhau, trong các lệnh dưới đây, -n
đồng nghĩa không hiển thị dòng mới cuối cùng:
$ echo -n "Tecmint How-Tos" | md5sum -
afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Tecmint How-To" | md5sum -
65136cb527bff5ed8615bd1959b0a248 -
Trong hướng dẫn này, tôi đã chỉ cho quý vị cách tạo giá trị băm cho các tệp tin, tạo checksum cho việc xác minh tính toàn vẹn của tệp tin trong Linux. Mặc dù các lỗ hổng bảo mật trong thuật toán MD5 đã được phát hiện, giá trị băm MD5 vẫn còn hữu ích đặc biệt nếu quý vị tin tưởng vào bên tạo giá trị băm.
Xác minh tệp tin là một khía cạnh quan trọng của việc xử lý tệp trên hệ thống của quý vị để tránh tải về, lưu trữ hoặc chia sẻ các tệp tin bị hỏng. Cuối cùng, như thường lệ, quý vị có thể liên hệ với chúng tôi qua biểu mẫu bình luận bên dưới để yêu cầu hỗ trợ, quý vị cũng có thể đưa ra một số gợi ý quan trọng để cải thiện bài viết này.