Máy tính mã băm Fowler-Noll-Vo FNV1a-64
Đã xuất bản: lúc 21:47:28 UTC 17 tháng 2, 2025
Máy tính mã băm sử dụng hàm băm Fowler-Noll-Vo 1a 64 bit (FNV1a-64) để 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.Fowler-Noll-Vo FNV1a-64 Hash Code Calculator
Hàm băm 64 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 64 bit (8 byte), thường được biểu diễn dưới dạng số thập lục phân 16 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.
Về thuật toán băm 64 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 64 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-64