Miklix

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

Công cụ tính toán mã băm sử dụng hàm băm CRC-32B (Kiểm tra dư tuần hoàn 32 bit, biến thể B) để tính toán mã băm dựa trên văn bản đầu vào hoặc tệp tải lên.

Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

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.


Bereken Nuwe Hash-kode

Dữ liệu được gửi hoặc tệp được tải lên thông qua biểu mẫu này sẽ chỉ được lưu trên máy chủ trong thời gian cần thiết để tạo mã băm theo yêu cầu. Mã băm sẽ bị xóa ngay trước khi kết quả được trả về trình duyệt của bạn.

Dữ liệu đầu vào:



Văn bản đã gửi được mã hóa UTF-8. Vì hàm băm hoạt động trên dữ liệu nhị phân, kết quả sẽ khác so với khi văn bản được mã hóa khác. Nếu bạn cần tính toán băm của văn bản trong một mã hóa cụ thể, bạn nên tải tệp lên thay thế.



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:


Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Christensen

Về tác giả

Mikkel Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.