Kalkulator kodu skrótu Fowler-Noll-Vo FNV1a-64
Opublikowano: 17 lutego 2025 21:46:55 UTC
Kalkulator kodu skrótu, który wykorzystuje 64-bitową funkcję skrótu Fowlera-Nolla-Vo 1a (FNV1a-64) do obliczenia kodu skrótu na podstawie wprowadzonego tekstu lub przesłanego pliku.Fowler-Noll-Vo FNV1a-64 Hash Code Calculator
Funkcja skrótu FNV-1a 64-bit jest częścią rodziny funkcji skrótu Fowler–Noll–Vo (FNV), zaprojektowanych do szybkiego skrótu przy zachowaniu dobrego rozkładu wartości skrótu. Jest powszechnie stosowana w aplikacjach takich jak tablice skrótów, sumy kontrolne i wyszukiwania danych. Generuje 64-bitowy (8 bajtów) kod skrótu, często reprezentowany jako 16-cyfrowa liczba szesnastkowa.
Wersja FNV-1a jest udoskonaloną wersją oryginalnej wersji FNV-1, charakteryzującą się lepszym poziomem bezpieczeństwa.
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 algorytmie skrótu Fowler-Noll-Vo FNV-1a 64-bitowym
Nie jestem matematykiem, ale spróbuję wyjaśnić tę funkcję haszującą, używając analogii, którą moi koledzy niematematycy mogą zrozumieć. Jeśli wolisz naukowo poprawne, przerażająco matematyczne wyjaśnienie, jestem pewien, że znajdziesz je gdzie indziej ;-)
Najpierw pomyślmy o algorytmie FNV-1 jak o przepisie na specjalny koktajl. Każdy dodany składnik (np. owoce, mleko lub miód) reprezentuje fragment danych — np. 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 (jak dodanie jednej dodatkowej jagody) sprawiła, że smoothie będzie smakować zupełnie inaczej. Tak właśnie działają funkcje haszujące — tworzą unikalny „smak” (lub wartość haszującą) dla każdego unikalnego zestawu składników (lub danych wejściowych).
Algorytm FNV-1 realizuje to zadanie w kilku etapach:
Krok 1: Zacznij od bazy (bazy offsetowej)
Pomyśl o tym jak o wlewaniu specjalnej bazy smoothie do blendera. Ta baza jest zawsze taka sama, bez względu na to, jakie składniki dodasz. W FNV-1 nazywa się to „offsetową bazą” – po prostu wymyślna liczba początkowa.
Krok 2: Dodawaj składniki jeden po drugim (przetwarzanie danych)
Teraz zaczynasz dodawać składniki, jeden po drugim - powiedzmy truskawkę, potem banana, potem trochę miodu. Każdy z nich reprezentuje bajt danych.
Krok 3: Połącz z tajnym mnożnikiem (FNV Prime)
Po dodaniu każdego składnika naciskasz przycisk blend, ale jest pewien haczyk: blender mnoży wszystko przez tajną „magiczną liczbę” zwaną liczbą FNV prime. Pomaga to naprawdę dobrze wymieszać składniki.
Krok 4: Dodaj odrobinę magii (operacja XOR)
Przed dodaniem kolejnego składnika posypujesz odrobiną magicznego pyłu (to jest operacja XOR). To jak nieoczekiwane odwrócenie smaku, dzięki czemu nawet niewielkie zmiany robią dużą różnicę.
Krok 5: Powtarzaj, aż do zakończenia
Po dodaniu każdego nowego składnika miksujesz i posypujesz magią, aż zmiksujesz wszystko.
Krok 6: Ostateczny Smoothie (wartość skrótu)
Kiedy skończysz, wylewasz smoothie. Ostateczny smak (wartość hash) jest unikalny dla tej konkretnej kombinacji składników. Gdybyś dodał choć jedną dodatkową jagodę, smakowałby zupełnie inaczej.
Wersja przedstawiona tutaj to ulepszona wersja FNV-1a 64 bit. Jeśli potrzebujesz oryginalnej wersji, mam również kalkulator do niej: Kalkulator kodu skrótu Fowler-Noll-Vo FNV1-64