Máy tính CRC (CRC-8, CRC-16, CRC-32, CRC-64)
Tính CRC-32, CRC-32C, CRC-16 (MODBUS, CCITT, XMODEM), CRC-8 và CRC-64 cho văn bản hoặc byte hex. Hiện mọi biến thể cùng lúc, xuất dạng hex hoặc thập phân.
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Máy tính CRC là gì?
Kiểm tra dư thừa vòng (CRC) là một giá trị checksum ngắn dùng để phát hiện các thay đổi ngoài ý muốn trong dữ liệu. Công cụ này tính CRC-32 (zip, PNG, Ethernet), CRC-32C (iSCSI, ext4, SCTP), CRC-32/BZIP2, CRC-32/MPEG-2, CRC-16/ARC, CRC-16/MODBUS, CRC-16/CCITT-FALSE, CRC-16/XMODEM, CRC-16/KERMIT, CRC-8/SMBUS, CRC-8/MAXIM và CRC-64/XZ cho đầu vào dạng văn bản, hex hoặc Base64, đồng thời liệt kê mọi biến thể cùng lúc để bạn tìm ra đúng loại mà thiết bị hay định dạng tệp của mình đang dùng.
Cách sử dụng Máy tính CRC
- Nhập văn bản vào ô Văn bản cần băm, hoặc chọn mã hóa đầu vào Byte dạng hex rồi dán các byte của một khung hay gói tin (khoảng trắng được bỏ qua).
- Chọn Biến thể CRC bạn cần; giá trị của nó hiện ở trên cùng và được tô sáng trong bảng Tất cả biến thể CRC.
- Chọn Định dạng đầu ra: hex (chữ thường hoặc chữ hoa) hoặc Thập phân.
- Nhấn Sao chép để sao chép CRC đã chọn, hoặc xem các biến thể khác trong bảng.
Ví dụ
123456789 (text)
cbf43926
Giá trị kiểm chuẩn của CRC-32. Bảng còn cho thấy CRC-32C e3069283, CRC-16/MODBUS 4b37, CRC-16/CCITT-FALSE 29b1 và CRC-64/XZ 995dc9bbdf1939fa.
Khi nào nên dùng Máy tính CRC
Dùng công cụ để tính hoặc gỡ lỗi checksum của các giao thức nối tiếp (Modbus RTU, XMODEM), định dạng tệp (ZIP, PNG, gzip) và các hệ thống lưu trữ hay mạng (iSCSI, ext4). Nó cũng rất tiện để nhận diện một CRC chưa rõ loại bằng cách so một khung dữ liệu đã biết với bảng kết quả. Đừng dùng CRC cho mục đích bảo mật: CRC là hàm tuyến tính và rất dễ giả mạo, ai cũng có thể sửa dữ liệu rồi chỉnh lại CRC cho khớp. Hãy dùng hàm băm mật mã hoặc MAC thay thế.
Máy tính CRC hoạt động như thế nào
CRC coi dữ liệu như một đa thức nhị phân lớn và tính phần dư khi chia nó cho một đa thức sinh cố định (theo modulo 2). Mỗi biến thể được xác định bởi độ rộng, đa thức, giá trị khởi tạo, việc có đảo bit đầu vào và đầu ra hay không, cùng giá trị XOR cuối (mô hình Rocksoft). Công cụ dùng một bảng tra 256 phần tử cho mỗi biến thể và kiểm tra từng biến thể với giá trị kiểm chuẩn trong danh mục — tức CRC của chuỗi ASCII 123456789 (ví dụ CRC-32 = cbf43926, CRC-32C = e3069283, CRC-16/MODBUS = 4b37). Kết quả được hiển thị dưới dạng số hex big-endian hoặc số thập phân.
Các Trường Hợp Sử Dụng Phổ Biến
- Tính CRC-16/MODBUS của một khung RTU trước khi gửi
- Kiểm tra CRC-32 được lưu trong tệp ZIP hoặc chunk PNG
- Xác định thiết bị đang dùng biến thể CRC nào từ một khung mẫu
- Tạo giá trị CRC-32C cho dữ liệu thử nghiệm lưu trữ hoặc mạng
- Xây dựng bộ test vector cho một bản cài đặt CRC trên hệ nhúng
Lưu Ý Bảo Mật
CRC chỉ phát hiện lỗi ngẫu nhiên. Nó không bảo vệ được trước việc chỉnh sửa có chủ đích, vì CRC có thể được tính lại hoặc ép về bất kỳ giá trị nào bằng đại số tuyến tính đơn giản.
Câu Hỏi Thường Gặp
Tôi cần dùng biến thể CRC nào?
Biến thể do giao thức hoặc định dạng quy định: ZIP/PNG/Ethernet dùng CRC-32, iSCSI/ext4/Btrfs dùng CRC-32C, Modbus RTU dùng CRC-16/MODBUS, XMODEM dùng CRC-16/XMODEM. Nếu không chắc, hãy so một khung dữ liệu đã biết với tất cả các dòng trong bảng.
Modbus gửi byte thấp của CRC trước — vì sao giá trị hex hiển thị lại khác?
Công cụ hiển thị CRC như một con số dạng hex big-endian (ví dụ 4b37). Modbus RTU truyền byte có trọng số thấp trước, nên trên đường truyền bạn sẽ thấy 37 4B.
Vì sao khung hex của tôi cho ra CRC khác với mong đợi?
Hãy chắc chắn đã chọn Byte dạng hex; với Văn bản (UTF-8), chính các ký tự 0–9 và a–f sẽ bị đem đi tính. Ngoài ra, đừng đưa các byte CRC vào đầu vào.
CRC-32 có giống với lệnh cksum không?
Không. Lệnh POSIX cksum dùng đa thức CRC-32 không đảo bit và còn trộn thêm độ dài tệp. Hãy dùng CRC-32 ở đây cho các giá trị của zip, gzip và PNG.