CoderTools

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