CRC-32 Hash Generator

Tính toán giá trị kiểm tra CRC-32 để xác minh tính toàn vẹn dữ liệu và phát hiện lỗi trong tệp và giao tiếp mạng

Thử các ví dụ này:

CRC-32 là gì?

CRC-32 (Cyclic Redundancy Check, 32-bit) là một thuật toán checksum nhanh được sử dụng để phát hiện các thay đổi ngẫu nhiên trong dữ liệu. Nó tạo ra giá trị 32-bit (8 ký tự hex) dựa trên phép chia đa thức của dữ liệu đầu vào. Thường được triển khai trong phần cứng và phần mềm để kiểm tra lỗi trong mạng, thiết bị lưu trữ và định dạng tệp.

Cách CRC-32 hoạt động

  1. Khởi tạo một thanh ghi 32-bit với tất cả các bit là 1 (0xFFFFFFFF).
  2. Xử lý từng byte bằng cách XOR với byte trên cùng của thanh ghi và tra cứu trong bảng tra trước.
  3. Dịch thanh ghi 8 bit và XOR với giá trị trong bảng.
  4. Lặp lại cho đến khi tất cả các byte được xử lý.
  5. Hoàn tất bằng cách đảo bit thanh ghi (NOT bit) để lấy giá trị CRC-32.

Các ứng dụng phổ biến

  • ZIP, gzip, PNG và các định dạng tệp khác để kiểm tra tính toàn vẹn
  • Ethernet, PPP và các giao thức mạng khác
  • Thiết bị lưu trữ như HDD, SSD và bộ điều khiển RAID
  • Xác minh lưu trữ và kiểm tra tính toàn vẹn khi tải xuống

Ví dụ về các checksum

InputCRC-32
Hello World4a17b156
password477dff2a
test123c4b96aea
(trống)00000000

CRC-32 so với các checksum và hàm băm khác

AlgorithmOutputKháng va chạmSpeed
CRC-3232 bit❌ Thấp⚡ Rất nhanh
MD5128 bit❌ Hỏng⚡ Nhanh
SHA-1160 bit❌ Bị xâm phạm⚡ Nhanh
SHA-256256 bit✅ An toàn🚀 Trung bình
BLAKE3256 bit✅ Rất an toàn⚡ Cực nhanh

Câu hỏi thường gặp

CRC-32 có an toàn cho mục đích mật mã không?

Không. CRC-32 được thiết kế để phát hiện lỗi, không phải để bảo mật. Nó dễ bị va chạm có chủ ý.

Tại sao sử dụng CRC-32 thay vì hàm băm mật mã?

CRC-32 nhanh hơn nhiều và đủ để phát hiện lỗi ngẫu nhiên, nhưng không nên dùng cho các ứng dụng yêu cầu bảo mật cao.

Làm thế nào để tôi xác minh việc tải xuống tệp?

Tạo checksum CRC-32 của tệp đã tải xuống và so sánh với giá trị đã công bố để đảm bảo tính toàn vẹn.

Resources