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

Máy tính mã băm sử dụng hàm băm CRC-32B (Kiểm tra dự phòng tuần hoàn 32 bit, biến thể B) để tính toán mã băm dựa trên dữ liệu nhập 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ự phòng tuần hoàn (CRC) là mã phát hiện lỗi thường được sử dụng để phát hiện các 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à 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 kỳ quặc trong ngôn ngữ PHP đảo ngược 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ế.



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 phép loại suy đơn giản. Không giống như nhiều hàm băm mật mã, đây không phải là một thuật toán đặc biệt phức tạp, vì vậy có lẽ sẽ ổn ;-)

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 rằng nó có thể bị hỏng trước khi đến tay người nhận. Dựa trên nội dung của lá thư, bạn tính toán một tổng kiểm tra CRC-32 và viết lên phong bì. Khi người nhận nhận được lá thư, họ cũng có thể tính toán tổng kiểm tra và xem nó có khớp với những gì bạn đã viết không. Nếu khớp, thì lá thư không bị hỏng hoặc thay đổi trong quá trình gửi.

CRC-32 thực hiện điều này theo quy trình bốn bước:

Bước 1: Thêm một số khoảng trống (Đệm)

  • CRC thêm một chút khoảng trống ở cuối tin nhắn (giống như việc đóng gói đậu phộng vào hộp).
  • Điều này giúp phát hiện lỗi dễ dàng hơn.

Bước 2: Thước đo ma thuật (Đa thức)

  • CRC-32 sử dụng "thước đo ma thuật" đặc biệt để đo dữ liệu.
    • Hãy nghĩ về thước kẻ này như một mô hình 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ẫu cố định.

Bước 3: Trượt thước (Quy trình chia)

  • Bây giờ CRC sẽ trượt thước kẻ ngang qua tin nhắn.
    • Tại mỗi điểm, nó sẽ kiểm tra xem các gờ và rãnh có thẳng hàng không.
    • Nếu chúng không thẳng hàng, CRC sẽ ghi chú (thực hiện bằng cách sử dụng 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à lật công tắc cho đến khi đến đích.

Bước 4: Kết quả cuối cùng (Tổng kiểm tra)

  • Sau khi trượt thước kẻ qua toàn bộ tin nhắn, bạn sẽ thấy một số nhỏ (dài 32 bit) biểu thị dữ liệu gốc.
    • Con số này giống như dấu vân tay riêng biệt của tin nhắn.
    • Đây là mã kiểm tra CRC-32.

Phiên bản được trình bày trên trang là biến thể CRC-32B, chủ yếu là một đặc điểm kỳ quặc của PHP chuyển đổi 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 thực sự cần khả năng tương thích với một ứng dụng PHP khác sử dụng nó.

Tôi cũng có máy tính cho các biến thể khác:


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 Bang Christensen

Về tác giả

Mikkel Bang 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.