Hình ảnh: Tổng quan trực quan về thuật toán băm 32-bit FNV-1
Đã xuất bản: lúc 13:29:27 UTC 12 tháng 1, 2026
Cập nhật lần cuối: lúc 21:41:23 UTC 9 tháng 1, 2026
Sơ đồ khối rõ ràng giải thích các giai đoạn chính của thuật toán băm 32 bit FNV-1, từ các byte đầu vào đến kết quả băm cuối cùng.
FNV-1 32-Bit Hash Algorithm – Visual Overview

Các phiên bản có sẵn của hình ảnh này
Các tệp hình ảnh có sẵn để tải xuống bên dưới được nén ít hơn và có độ phân giải cao hơn - và do đó, chất lượng cao hơn - so với các hình ảnh được nhúng trong các bài viết và trang trên trang web này, vốn được tối ưu hóa về kích thước tệp để giảm mức tiêu thụ băng thông.
Kích thước thông thường (1,536 x 1,024)
Kích thước lớn (3,072 x 2,048)
Kích thước rất lớn (4,608 x 3,072)
Kích thước cực lớn (6,144 x 4,096)
Kích thước lớn đến mức buồn cười (1,048,576 x 699,051)
- Vẫn đang tải lên... ;-)
Mô tả hình ảnh
Hình ảnh là một đồ họa thông tin khổ ngang rộng, có tiêu đề "Thuật toán băm 32-bit FNV-1" được hiển thị bằng văn bản lớn màu đậm ở phía trên. Phong cách tổng thể gọn gàng, phẳng và mang tính hướng dẫn, sử dụng các hình chữ nhật bo tròn, hình tròn và mũi tên để hướng dẫn người xem từ trái sang phải. Nền trắng, tạo cho sơ đồ vẻ ngoài nhẹ nhàng, gọn gàng, phù hợp cho việc giảng dạy.
Ở phía ngoài cùng bên trái là một hình chữ nhật bo tròn màu xanh lam có nhãn "Dữ liệu đầu vào". Bên dưới ô này là một hàng ngang nhỏ gồm các khối nhiều màu sắc đại diện cho từng byte dữ liệu riêng lẻ. Một mũi tên ngắn dẫn từ ô nhập liệu này về phía trung tâm của sơ đồ, cho biết sự bắt đầu của quá trình băm.
Tiếp theo là một hình chữ nhật bo tròn màu vàng có nhãn "Offset Basis" (Cơ sở bù trừ), với một dòng chữ nhỏ hơn bên dưới ghi "32-Bit Value" (Giá trị 32 bit). Ô này biểu thị trạng thái nội bộ ban đầu được thuật toán sử dụng trước khi bất kỳ byte đầu vào nào được xử lý. Mũi tên từ dữ liệu đầu vào chỉ vào ô cơ sở bù trừ này, cho thấy thuật toán bắt đầu với giá trị khởi đầu được xác định trước này.
Từ cơ sở bù trừ, luồng dữ liệu tiếp tục đi vào một nút tròn màu cam có nhãn "XOR". Một cặp biểu tượng byte màu nhỏ nằm ngay bên dưới vòng tròn này, được chú thích là "Byte đầu vào", nhấn mạnh rằng mỗi byte từ dữ liệu gốc được kết hợp với trạng thái băm hiện tại bằng phép toán XOR bitwise. Hình ảnh minh họa cho thấy bước XOR này được lặp lại cho mỗi byte.
Sau bước XOR, một mũi tên chỉ vào một nút tròn màu xanh lam được đánh dấu bằng ký hiệu phép nhân, được ghi nhãn về mặt khái niệm là "Nhân với số nguyên tố FNV" phía trên luồng. Điều này cho thấy thuật toán nhân giá trị trung gian với một số nguyên tố cố định để trộn lẫn các bit hơn nữa và phân tán các thay đổi trong toàn bộ bảng băm.
Bên phải vòng tròn phép nhân là một hình chữ nhật bo tròn màu xanh lá cây có nhãn "Kết quả băm 32 bit". Điều này thể hiện giá trị băm thay đổi sau khi xử lý một hoặc nhiều byte, và cuối cùng là giá trị băm 32 bit cuối cùng được thuật toán tạo ra sau khi tất cả dữ liệu đầu vào đã được xử lý.
Phía trên hàng ô vuông và hình tròn chính, một đường kẻ ngang mỏng với các mũi tên nhỏ hướng xuống bao gồm các đoạn văn bản như "Bắt đầu với cơ sở bù", "XOR với Byte", "Nhân với số nguyên tố FNV" và "Giá trị băm 32 bit". Những chú thích này đóng vai trò như một hướng dẫn từng bước tóm tắt các giai đoạn của thuật toán bằng ngôn ngữ dễ hiểu.
Dọc theo phần dưới của sơ đồ, một mũi tên dài trải dài từ trái sang phải với dòng chữ "Lặp lại cho mỗi byte dữ liệu". Điều này làm rõ rằng các bước XOR và phép nhân tạo thành một vòng lặp được áp dụng cho mọi byte trong chuỗi đầu vào, chứ không chỉ là một phép toán đơn lẻ.
Nhìn chung, sơ đồ này tránh sử dụng các hằng số số cụ thể và thay vào đó tập trung vào luồng khái niệm: các byte đầu vào đi vào quá trình xử lý, một trạng thái nội bộ được khởi tạo, mỗi byte được XOR với giá trị hiện tại, kết quả được nhân lên, và chu kỳ lặp lại cho đến khi tạo ra mã băm 32 bit cuối cùng. Việc sử dụng các màu sắc khác nhau cho mỗi giai đoạn giúp thuật toán dễ hiểu ngay cả đối với người mới bắt đầu.
Hình ảnh có liên quan đến: Máy tính mã băm Fowler-Noll-Vo FNV1-32
