Kalkulator kodu skrótu Fowler-Noll-Vo FNV1a-32
Opublikowano: 18 lutego 2025 00:09:22 UTC
Ostatnia aktualizacja: 12 stycznia 2026 13:28:23 UTC
Fowler-Noll-Vo FNV1a-32 Hash Code Calculator
32-bitowa funkcja skrótu FNV-1a należy do rodziny funkcji skrótu Fowlera-Nolla-Vo (FNV), zaprojektowanych do szybkiego haszowania przy jednoczesnym zachowaniu dobrego rozkładu wartości skrótu. Jest powszechnie stosowana w aplikacjach takich jak tablice skrótów, sumy kontrolne i wyszukiwanie danych. Generuje 32-bitowy (4 bajty) kod skrótu, często reprezentowany jako 8-cyfrowa liczba szesnastkowa.
Wersja FNV-1a jest udoskonaloną wersją oryginalnej wersji FNV-1, zapewniającą lepsze bezpieczeństwo.
Pełne ujawnienie: nie napisałem konkretnej implementacji funkcji hash używanej na tej stronie. Jest to standardowa funkcja dołączona do języka programowania PHP. Stworzyłem jedynie interfejs sieciowy, aby udostępnić go tutaj publicznie dla wygody.
O 32-bitowym algorytmie skrótu Fowler-Noll-Vo FNV-1a
Nie jestem matematykiem, ale postaram się wyjaśnić tę funkcję skrótu za pomocą analogii zrozumiałej dla moich kolegów niebędących matematykami. Jeśli wolisz naukowo poprawne, matematycznie przerażające wyjaśnienie, na pewno znajdziesz je gdzie indziej ;-)
Po pierwsze, wyobraźmy sobie algorytm FNV-1 jak przepis na specjalny koktajl. Każdy dodany składnik (np. owoce, mleko czy miód) reprezentuje fragment danych – na przykład litery, cyfry, a nawet cały plik.
Teraz celem jest wymieszanie tych składników w bardzo specyficzny sposób, tak aby nawet najmniejsza zmiana w przepisie (np. dodanie jednej dodatkowej jagody) sprawiła, że smoothie będzie miało zupełnie inny smak. Tak właśnie działają funkcje skrótu – tworzą unikalny „smak” (lub wartość skrótu) dla każdego unikalnego zestawu składników (lub danych wejściowych).
Algorytm FNV-1 realizuje to zadanie w ramach procesu wieloetapowego:
Krok 1: Zacznij od bazy (bazy offsetowej)
Wyobraź sobie, że wlewasz specjalną bazę do smoothie do blendera. Ta baza jest zawsze taka sama, niezależnie od dodanych składników. W FNV-1 nazywa się to „offsetem bazowym” – to po prostu wymyślna liczba początkowa.
Krok 2: Dodawaj składniki jeden po drugim (przetwarzanie danych)
Teraz zaczynasz dodawać składniki, po jednym na raz – powiedzmy truskawkę, potem banana, a potem trochę miodu. Każdy z nich reprezentuje jeden bajt danych.
Krok 3: Połącz z tajnym mnożnikiem (FNV Prime)
Po dodaniu każdego składnika naciskasz przycisk miksowania, ale jest pewien haczyk: blender mnoży wszystko przez sekretną „magiczną liczbę” zwaną liczbą początkową FNV. To pomaga naprawdę dobrze wymieszać składniki.
Krok 4: Dodaj odrobinę magii (operacja XOR)
Przed dodaniem kolejnego składnika posypujemy odrobiną magicznego pyłu (to operacja XOR). To jak nieoczekiwana zmiana smaku, dzięki której nawet drobne zmiany robią dużą różnicę.
Krok 5: Powtarzaj, aż do zakończenia
Kontynuujesz mieszanie i posypywanie magią po każdym nowym składniku, aż do momentu, gdy zmiksujesz wszystko.
Krok 6: Ostateczny koktajl (wartość skrótu)
Po zakończeniu wylewasz smoothie. Ostateczny smak (wartość haszująca) jest unikalny dla tej konkretnej kombinacji składników. Gdybyś dodał choć jedną dodatkową jagodę, smakowałby zupełnie inaczej.
Prezentowana tutaj wersja to ulepszona wersja FNV-1a 32-bitowa. Jeśli potrzebujesz wersji oryginalnej, mam też do niej kalkulator: Link
Dalsza lektura
Jeśli podobał Ci się ten wpis, mogą Cię zainteresować również poniższe sugestie:
- Kalkulator kodu skrótu Tiger-192/4
- Kalkulator kodu skrótu HAVAL-256/3
- Kalkulator kodu skrótu HAVAL-192/4
