Trình tạo Hash FNV
Hàm hash không mã hóa Fowler-Noll-Vo
-
-
-
-
Về Hash FNV
Hash FNV là gì?
FNV (Fowler-Noll-Vo) là hàm hash không mã hóa được tạo bởi Glenn Fowler, Landon Curt Noll và Kiem-Phong Vo. Nó được công bố lần đầu vào năm 1991 và được biết đến với sự đơn giản, tốc độ và thuộc tính phân phối tốt. FNV được sử dụng rộng rãi trong bảng băm, checksum và dấu vân tay dữ liệu.
Biến thể thuật toán
- FNV-1a: Biến thể cải tiến XOR byte với hash trước, sau đó nhân. Được khuyến nghị cho hầu hết các trường hợp sử dụng do đặc tính avalanche tốt hơn.
- FNV-1: Biến thể gốc nhân trước, sau đó XOR. Vẫn hữu ích nhưng FNV-1a thường được ưa chuộng hơn.
Độ dài bit có sẵn
- 32-bit: Đầu ra hex 8 ký tự. Nhanh và phù hợp cho bảng băm với kích thước dữ liệu vừa phải.
- 52-bit: Đầu ra hex 13 ký tự. Tối ưu hóa cho phạm vi số nguyên an toàn 53-bit của JavaScript. Cân bằng tốt giữa tốc độ và khả năng chống va chạm.
- 64-bit: Đầu ra hex 16 ký tự. Không gian hash lớn hơn để giảm xác suất va chạm trong tập dữ liệu lớn.
Trường hợp sử dụng phổ biến
- Bảng băm và hash map cho tra cứu khóa nhanh
- Loại bỏ trùng lặp dữ liệu và dấu vân tay nội dung
- Xác minh checksum cho tính toàn vẹn dữ liệu
- Bộ lọc Bloom và cấu trúc dữ liệu xác suất
Hash FNV không an toàn về mặt mã hóa. Không sử dụng cho mật khẩu, chữ ký số hoặc ứng dụng nhạy cảm về bảo mật. Để sử dụng mã hóa, hãy dùng SHA-256 hoặc BLAKE2.
Công Cụ Liên Quan
Trình Tạo MurmurHash
Hàm hash phi mật mã hiệu suất cao cho bảng hash, bộ lọc Bloom và phân vùng dữ liệu
Trình Tạo xxHash
Hash phi mật mã cực nhanh hỗ trợ xxHash32, xxHash64, xxHash3 và xxHash128
Máy Tính CRC
Tính checksum CRC-8, CRC-16, CRC-32, CRC-64 với hỗ trợ Modbus, CCITT và các tiêu chuẩn giao thức khác
Trình Tạo Hash SHA-3 / Keccak
Tạo hash SHA3-224/256/384/512 và Keccak với tăng tốc WebAssembly, được sử dụng trong Ethereum