Máy tính checksum
Chi tiết kỹ thuật
Máy Tính Checksum Hoạt Động Như Thế Nào
Công cụ làm gì
Máy Tính Checksum tính các checksum không mang tính mật mã để xác minh tính toàn vẹn dữ liệu, hỗ trợ các thuật toán CRC-16, CRC-24, CRC-32, Adler-32 và Luhn. Công cụ chấp nhận cả văn bản thuần và đầu vào byte thập lục phân thô, cho phép bạn đối chiếu checksum với các giao thức mạng, định dạng tệp và số định danh. Kết quả được hiển thị ở dạng thập lục phân và thập phân để dễ so sánh với tài liệu đặc tả.
Các trường hợp sử dụng phổ biến cho lập trình viên
Lập trình viên dùng máy tính CRC khi gỡ lỗi giao thức mạng (Ethernet dùng CRC-32, PPP dùng CRC-16), xác minh tính toàn vẹn tệp trong các định dạng lưu trữ như ZIP và PNG, hoặc kiểm tra số định danh bằng Luhn (thẻ tín dụng, IMEI). Kỹ sư nhúng dùng công cụ này để xác minh các triển khai CRC khớp với đầu ra mong đợi trước khi nạp firmware hoặc kiểm thử khung giao tiếp nối tiếp.
Định dạng dữ liệu, kiểu hoặc biến thể
CRC-16 (CCITT) tạo ra checksum 16-bit dùng trong XMODEM, Bluetooth và USB. CRC-32 (ISO 3720) tạo ra giá trị 32-bit dùng trong Ethernet, ZIP và PNG. Adler-32 là lựa chọn thay thế nhanh hơn cho CRC-32 được dùng trong zlib. Luhn mod-10 không phải CRC mà là thuật toán chữ số kiểm tra dùng để xác thực số thẻ tín dụng, mã ISIN và số IMEI. Chế độ nhập hex cho phép bạn nhập các chuỗi byte thô để xác minh ở cấp giao thức.
Các lỗi thường gặp và trường hợp biên
Các thuật toán CRC có nhiều biến thể về đa thức và khởi tạo — CRC-16-CCITT khác với CRC-16-IBM, vì vậy luôn xác nhận biến thể mà một giao thức yêu cầu. Checksum phát hiện hỏng hóc do vô tình nhưng không cung cấp bất kỳ bảo mật nào trước việc sửa đổi có chủ đích; hãy dùng hàm băm mật mã cho mục đích đó. Khi dùng chế độ nhập hex, hãy đảm bảo các byte được nhập không có dấu phân tách hoặc có định dạng nhất quán, vì thêm một nibble sẽ làm lệch tất cả các byte phía sau.
Khi nào nên dùng công cụ này thay vì viết mã
Dùng công cụ trên trình duyệt này để kiểm tra nhanh khi gỡ lỗi khung giao thức, xác thực một số thẻ tín dụng đơn lẻ bằng Luhn, hoặc so sánh đầu ra CRC với đặc tả. Với việc xác minh tệp hàng loạt, pipeline CI, hoặc các bản build firmware nhúng, hãy dùng các thư viện CRC bản địa theo ngôn ngữ (zlib.crc32 của Python, các gói crc dựa trên Buffer của Node) có thể xử lý stream và tích hợp vào quy trình tự động.