Miklix

Máy tính mã băm Fowler-Noll-Vo FNV1a-32

Đã xuất bản: lúc 00:10:09 UTC 18 tháng 2, 2025

Máy tính mã băm sử dụng hàm băm Fowler-Noll-Vo 1a 32 bit (FNV1a-32) để 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:

Fowler-Noll-Vo FNV1a-32 Hash Code Calculator

Hàm băm 32 bit FNV-1a là một phần của họ hàm băm Fowler–Noll–Vo (FNV), được thiết kế để băm nhanh trong khi vẫn duy trì phân phối tốt các giá trị băm. Nó thường được sử dụng trong các ứng dụng như bảng băm, tổng kiểm tra và tra cứu dữ liệu. Nó tạo ra mã băm 32 bit (4 byte), thường được biểu diễn dưới dạng số thập lục phân 8 chữ số.

Phiên bản FNV-1a là phiên bản cải tiến hơn so với chức năng FNV-1 ban đầu với khả năng bảo mật tốt hơn.

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 32 bit Fowler-Noll-Vo FNV-1a

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 mà những người không phải nhà toán học như tôi có thể hiểu được. Nếu bạn thích một lời giải thích khoa học chính xác, toán học đáng sợ, tôi chắc chắn bạn có thể tìm thấy ở nơi khác ;-)

Trước tiên, hãy nghĩ về thuật toán FNV-1 như một công thức để làm một loại sinh tố đặc biệt. Mỗi thành phần bạn thêm vào (như trái cây, sữa hoặc mật ong) đại diện cho một phần dữ liệu - như chữ cái, số hoặc thậm chí là toàn bộ tệp.

Bây giờ, mục tiêu là trộn các thành phần này theo một cách rất cụ thể để ngay cả những thay đổi nhỏ nhất trong công thức (như thêm một quả việt quất) cũng làm cho sinh tố có hương vị hoàn toàn khác. Đó là cách hoạt động của hàm băm - chúng tạo ra một "hương vị" (hoặc giá trị băm) duy nhất cho mỗi tập hợp thành phần duy nhất (hoặc dữ liệu đầu vào).

Thuật toán FNV-1 thực hiện điều này theo một quy trình gồm nhiều bước:

Bước 1: Bắt đầu với một Cơ sở (Cơ sở bù trừ)

Hãy nghĩ về điều này giống như đổ một loại sinh tố đặc biệt vào máy xay sinh tố của bạn. Loại sinh tố này luôn giống nhau, bất kể bạn thêm bất kỳ thành phần nào. Trong FNV-1, đây được gọi là "cơ sở bù trừ" - chỉ là một con số bắt đầu lạ mắt.

Bước 2: Thêm từng thành phần một (Xử lý dữ liệu)

Bây giờ bạn bắt đầu thêm các thành phần của mình, từng thành phần một - ví dụ như một quả dâu tây, sau đó là một quả chuối, rồi một ít mật ong. Mỗi thành phần này đại diện cho một byte dữ liệu.

Bước 3: Pha trộn với một công cụ nhân đôi bí mật (FNV Prime)

Sau khi thêm từng thành phần, bạn nhấn nút trộn, nhưng đây là điều bất ngờ: máy xay sinh tố sẽ nhân mọi thứ với một "con số ma thuật" bí mật gọi là FNV prime. Điều này giúp trộn mọi thứ thực sự tốt.

Bước 4: Thêm một chút phép thuật (Phép toán XOR)

Trước khi thêm thành phần tiếp theo, bạn rắc một ít bụi ma thuật (đây là phép toán XOR). Giống như việc đảo ngược hương vị theo những cách bất ngờ, đảm bảo ngay cả những thay đổi nhỏ cũng tạo nên sự khác biệt lớn.

Bước 5: Lặp lại cho đến khi hoàn thành

Bạn tiếp tục pha trộn và rắc thêm chút gia vị sau mỗi thành phần mới cho đến khi chế biến xong mọi thứ.

Bước 6: Smoothie cuối cùng (Giá trị băm)

Khi bạn hoàn thành, bạn đổ sinh tố ra. Hương vị cuối cùng (giá trị băm) là duy nhất cho sự kết hợp chính xác của các thành phần đó. Nếu bạn thêm thậm chí chỉ một quả việt quất, nó sẽ có hương vị hoàn toàn khác.

Phiên bản được trình bày ở đây là phiên bản FNV-1a 32 bit được cải tiến. Nếu bạn cần phiên bản gốc, tôi cũng có một máy tính cho việc đó: Máy tính mã băm Fowler-Noll-Vo FNV1-32

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.