Checksum
Giá trị được tính toán để phát hiện lỗi trong dữ liệu. Dùng để xác minh tính toàn vẹn dữ liệu trong quá trình truyền tải và lưu trữ.
Checksum là giá trị có độ dài cố định được tính toán để xác minh tính toàn vẹn của dữ liệu. Bằng cách so sánh checksum tại nguồn và đích, bạn có thể xác nhận dữ liệu không bị hỏng trong quá trình truyền tải. Nguyên lý rất đơn giản: toàn bộ dữ liệu được xử lý qua một thuật toán cụ thể để tạo ra giá trị "dấu vân tay" ngắn.
Các phương pháp checksum phổ biến bao gồm CRC (Cyclic Redundancy Check), Adler-32, MD5 và SHA-256. CRC-32 tạo giá trị kiểm tra 32-bit và được sử dụng rộng rãi trong khung Ethernet và lưu trữ ZIP. MD5 tạo ra bản tóm tắt 128-bit (32 ký tự thập lục phân), nhưng do khả năng chống va chạm thấp, nó không còn được khuyến nghị cho mục đích bảo mật. Sách kỹ thuật mạng giải thích cách checksum hoạt động chi tiết.
Xác minh checksum SHA-256 được cung cấp cùng bản tải phần mềm xác nhận rằng tệp không bị giả mạo. Hình ảnh ISO phân phối Linux thường công bố giá trị checksum trên trang chính thức. Trên dòng lệnh, bạn có thể dễ dàng xác minh bằng sha256sum (Linux) hoặc shasum -a 256 (macOS).
Checksum và giá trị băm thường bị nhầm lẫn, nhưng nói chính xác chúng phục vụ mục đích khác nhau. Checksum chủ yếu phát hiện hỏng dữ liệu ngẫu nhiên, trong khi giá trị băm được thiết kế để phát hiện giả mạo có chủ đích và xác định dữ liệu duy nhất. Tuy nhiên trong thực tế, các hàm băm mật mã như SHA-256 thường được sử dụng làm checksum, làm mờ ranh giới giữa hai khái niệm.
Khi tính checksum cho dữ liệu văn bản, mã hóa ký tự rất quan trọng. Cùng một chuỗi tạo ra chuỗi byte khác nhau trong UTF-8 so với Shift_JIS, dẫn đến giá trị checksum khác nhau. Sự khác biệt về kết thúc dòng (LF so với CRLF) cũng ảnh hưởng đến kết quả, khiến chuẩn hóa kết thúc dòng quan trọng cho xác minh tệp đa nền tảng.
Về số ký tự, độ dài chuỗi checksum được cố định theo thuật toán: CRC-32 tạo ra 8 ký tự thập lục phân, MD5 tạo ra 32, và SHA-256 tạo ra 64. Việc độ dài đầu ra không đổi bất kể kích thước dữ liệu đầu vào là thuộc tính quan trọng của checksum. Sách cơ bản truyền thông dữ liệu cung cấp thêm ngữ cảnh.