Miklix

Kalkulator kodu skrótu MurmurHash3A

Opublikowano: 18 lutego 2025 00:39:29 UTC

Kalkulator kodu skrótu wykorzystujący funkcję skrótu MurmurHash3A do obliczania 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:

MurmurHash3A Hash Code Calculator

MurmurHash3 to niekryptograficzna funkcja skrótu zaprojektowana przez Austina Appleby'ego w 2008 r. Jest szeroko stosowana do ogólnego skrótu ze względu na swoją szybkość, prostotę i dobre właściwości dystrybucyjne. Funkcje MurmurHash są szczególnie skuteczne w przypadku struktur danych opartych na skrótach, takich jak tabele skrótów, filtry Blooma i systemy deduplikacji danych.

Wariant przedstawiony na tej stronie to wariant 3A, który jest zoptymalizowany dla systemów 32-bitowych. Generuje 32-bitowe (4-bajtowe) kody haszujące, zwykle reprezentowane jako 8-cyfrowa liczba szesnastkowa.

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 MurmurHash3A

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, pełne matematyczne wyjaśnienie, jestem pewien, że znajdziesz je gdzie indziej ;-)

Teraz wyobraź sobie, że masz duże pudełko klocków LEGO. Za każdym razem, gdy układasz je w określony sposób, robisz zdjęcie. Bez względu na to, jak duże lub kolorowe jest ułożenie, aparat zawsze daje ci małe zdjęcie o stałym rozmiarze. To zdjęcie przedstawia twoje dzieło LEGO, ale w kompaktowej formie.

MurmurHash3 robi coś podobnego z danymi. Przyjmuje dowolny rodzaj danych (tekst, liczby, pliki) i zmniejsza je do małego, stałego „odcisku palca” lub wartości skrótu. Ten odcisk palca pomaga komputerom szybko identyfikować, sortować i porównywać dane bez konieczności patrzenia na całość.

Inną analogią byłoby pieczenie ciasta, a MurmurHash3 to przepis na zamianę tego ciasta w małą babeczkę (hash). Byłby to proces składający się z trzech etapów:

Krok 1: Pokrój na kawałki (podział danych)

  • Najpierw MurmurHash3 dzieli dane na równe kawałki, niczym ciasto krojone na równe kwadraty.

Krok 2: Mieszaj jak szalony (mieszanie kawałków)

  • Każdy element przechodzi przez szalony proces miksowania:
    • Odwracanie: Podobnie jak odwracanie naleśnika, kawałki układają się inaczej.
    • Mieszanie: Dodawanie losowych składników (operacji matematycznych) w celu wymieszania składników.
    • Spłaszczanie: ściska dane, aby upewnić się, że żaden oryginalny fragment nie wystaje poza obrys.

Krok 3: Ostateczny test smaku (finalizacja)

  • Po wymieszaniu wszystkich fragmentów MurmurHash3 miesza je po raz ostatni, aby mieć pewność, że nawet najmniejsza zmiana w oryginalnych danych całkowicie zmieni smak (hasz).
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.