Máy tính mã băm CRC-32B
Đã xuất bản: lúc 18:31:07 UTC 17 tháng 2, 2025
Cập nhật lần cuối: lúc 09:16:13 UTC 12 tháng 1, 2026
CRC-32B Hash Code Calculator
Kiểm tra dư tuần hoàn (CRC) là một mã phát hiện lỗi thường được sử dụng để phát hiện những thay đổi ngẫu nhiên đối với dữ liệu thô. Mặc dù về mặt kỹ thuật không phải là một hàm băm mật mã, CRC-32 thường được gọi là hàm băm do khả năng tạo ra đầu ra có kích thước cố định (32 bit) từ đầu vào có độ dài thay đổi. Phiên bản được trình bày trên trang này là biến thể CRC-32B, thực chất chỉ là một đặc điểm riêng trong ngôn ngữ PHP đảo ngược thứ tự các bit (little-endian so với big-endian trong CRC-32 gốc).
Tiết lộ đầy đủ: Tôi không viết phần triển khai cụ thể của hàm băm được sử dụng trên trang này. Đây là một hàm chuẩn đi kèm với ngôn ngữ lập trình PHP. Tôi chỉ tạo giao diện web để công khai ở đây cho thuận tiện.
Giới thiệu về thuật toán băm CRC-32B
Tôi không phải là nhà toán học, nhưng tôi sẽ cố gắng giải thích hàm băm này bằng một ví dụ đơn giản. Không giống như nhiều hàm băm mật mã khác, thuật toán này không quá phức tạp, nên chắc là sẽ ổn thôi ;-)
Hãy tưởng tượng bạn đang gửi một lá thư qua đường bưu điện, nhưng bạn lo lắng nó có thể bị hư hỏng trước khi đến tay người nhận. Dựa trên nội dung thư, bạn tính toán mã kiểm tra CRC-32 và viết mã đó lên phong bì. Khi người nhận nhận được thư, họ cũng có thể tính toán mã kiểm tra và xem nó có khớp với những gì bạn đã viết hay không. Nếu khớp, lá thư không bị hư hỏng hoặc thay đổi trên đường đi.
CRC-32 thực hiện điều này thông qua một quy trình gồm bốn bước:
Bước 1: Thêm khoảng trống (đệm)
- CRC thêm một chút khoảng trống ở cuối thông điệp (giống như những hạt xốp chèn vào hộp).
- Điều này giúp nó phát hiện lỗi dễ dàng hơn.
Bước 2: Thước đo thần kỳ (Đa thức)
- CRC-32 sử dụng một "thước đo ma thuật" đặc biệt để đo dữ liệu. Hãy tưởng tượng thước đo này như một mô hình gồm các gờ và rãnh (đây là đa thức, nhưng đừng lo lắng về từ đó). "Thước đo" phổ biến nhất cho CRC-32 là một mô hình cố định.
Bước 3: Di chuyển thước kẻ (Quá trình chia)
- Lúc này, CRC sẽ trượt thước đo trên toàn bộ thông điệp. Tại mỗi điểm, nó kiểm tra xem các gờ và rãnh có thẳng hàng hay không. Nếu chúng không thẳng hàng, CRC sẽ ghi chú lại (việc này được thực hiện bằng phép toán XOR đơn giản, giống như bật hoặc tắt công tắc). Nó tiếp tục trượt và bật tắt công tắc cho đến khi đến cuối.
Bước 4: Kết quả cuối cùng (Mã kiểm tra)
- Sau khi trượt thước kẻ trên toàn bộ thông điệp, bạn sẽ nhận được một dãy số nhỏ (32 bit) đại diện cho dữ liệu gốc. Dãy số này giống như dấu vân tay duy nhất của thông điệp. Đây chính là mã kiểm tra CRC-32.
Phiên bản được trình bày trên trang này là biến thể CRC-32B, chủ yếu là một đặc điểm riêng của PHP làm đảo ngược thứ tự bit (little-endian so với big-endian). Có lẽ bạn chỉ nên sử dụng phiên bản này nếu bạn cần khả năng tương thích cụ thể với một ứng dụng PHP khác sử dụng nó.
Tôi cũng có các công cụ tính toán cho các biến thể khác:
- Liên kết
- Liên kết
Đọc thêm
Nếu bạn thích bài viết này, bạn cũng có thể thích những gợi ý sau:
