Miklix

Kalkulator kodu skrótu Fowler-Noll-Vo FNV1a-32

Opublikowano: 18 lutego 2025 00:09:22 UTC

Kalkulator kodu skrótu, który wykorzystuje 32-bitową funkcję skrótu Fowlera-Nolla-Vo 1a (FNV1a-32) do obliczenia kodu skrótu na podstawie wprowadzonego tekstu lub przesłanego pliku.

Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

Fowler-Noll-Vo FNV1a-32 Hash Code Calculator

Funkcja skrótu FNV-1a 32-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 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, 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.


Obliczanie nowego kodu skrótu

Dane przesłane lub pliki przesłane za pośrednictwem tego formularza będą przechowywane na serwerze tylko tak długo, jak będzie to konieczne do wygenerowania żądanego kodu skrótu. Zostaną one usunięte bezpośrednio przed zwróceniem wyniku do przeglądarki użytkownika.

Dane wejściowe:



Przesłany tekst jest zakodowany w UTF-8. Ponieważ funkcje skrótu działają na danych binarnych, wynik będzie inny niż w przypadku tekstu w innym kodowaniu. Jeśli chcesz obliczyć skrót tekstu w określonym kodowaniu, powinieneś przesłać plik.



O algorytmie skrótu Fowler-Noll-Vo FNV-1a 32-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 32 bit. Jeśli potrzebujesz oryginalnej wersji, mam również kalkulator do niej: Kalkulator kodu skrótu Fowler-Noll-Vo FNV1-32

Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.