logo

Funkcje skrótu i ​​rodzaje funkcji skrótu

Funkcje mieszające są podstawową koncepcją w informatyce i odgrywają kluczową rolę w różnych zastosowaniach, takich jak przechowywanie, wyszukiwanie i kryptografia danych. W strukturach danych i algorytmach (DSA) funkcje skrótu są używane przede wszystkim w tablicach skrótów, które są niezbędne do wydajnego zarządzania danymi. W tym artykule szczegółowo opisano zawiłości funkcji skrótu, ich właściwości i różne typy funkcji skrótu używanych w DSA.

Co to jest funkcja skrótu?

A funkcja skrótu to funkcja, która pobiera dane wejściowe (lub „wiadomość”) i zwraca ciąg bajtów o stałym rozmiarze. Wynik, zazwyczaj liczba, nazywany jest kod skrótu Lub wartość skrótu . Głównym celem funkcji skrótu jest efektywne mapowanie danych o dowolnym rozmiarze na wartości o stałym rozmiarze, które są często używane jako indeksy w tabelach skrótów.



Kluczowe właściwości funkcji skrótu

  • Deterministyczny : Funkcja skrótu musi konsekwentnie generować ten sam wynik dla tych samych danych wejściowych.
  • Naprawiono rozmiar wyjściowy : Dane wyjściowe funkcji skrótu powinny mieć stały rozmiar, niezależnie od rozmiaru danych wejściowych.
  • Efektywność : Funkcja skrótu powinna być w stanie szybko przetworzyć dane wejściowe.
  • Jednolitość : Funkcja skrótu powinna równomiernie rozprowadzać wartości skrótu w przestrzeni wyjściowej, aby uniknąć grupowania.
  • Odporność na obraz wstępny : Odwrócenie funkcji skrótu, tj. znalezienie oryginalnych danych wejściowych, biorąc pod uwagę wartość skrótu, powinno być niewykonalne obliczeniowo.
  • Odporność na kolizje : Znalezienie dwóch różnych danych wejściowych, które dają tę samą wartość skrótu, powinno być trudne.
  • Efekt lawiny : Niewielka zmiana danych wejściowych powinna dać znacząco inną wartość skrótu.

Zastosowania funkcji skrótu

  • Tabele mieszające : Najpopularniejszym zastosowaniem funkcji skrótu w DSA są tabele skrótów, które zapewniają efektywny sposób przechowywania i pobierania danych.
  • Integralność danych : Funkcje skrótu służą do zapewnienia integralności danych poprzez generowanie sum kontrolnych.
  • Kryptografia : W aplikacjach kryptograficznych funkcje skrótu służą do tworzenia bezpiecznych algorytmów mieszania, takich jak SHA-256.
  • Struktury danych : Funkcje skrótu są wykorzystywane w różnych strukturach danych, takich jak filtry Blooma i zestawy skrótów.

Rodzaje funkcji skrótu

Istnieje wiele funkcji skrótu korzystających z klawiszy numerycznych lub alfanumerycznych. W tym artykule skupiono się na omówieniu różnych funkcji skrótu:

  1. Metoda podziału.
  2. Metoda mnożenia
  3. Metoda środkowego kwadratu
  4. Metoda składania
  5. Kryptograficzne funkcje skrótu
  6. Uniwersalne haszowanie
  7. Idealne haszowanie

Zacznijmy szczegółowo omawiać te metody.

1. Metoda podziału

Metoda dzielenia polega na podzieleniu klucza przez liczbę pierwszą i wykorzystaniu reszty jako wartości skrótu.



H ( k )= k przeciwko M

rdzeń Javy

Gdzie k jest kluczem i 𝑚 M jest liczbą pierwszą.

Zalety :



sortowanie na liście w Javie
  • Proste w wykonaniu.
  • Działa dobrze, gdy 𝑚 M jest liczbą pierwszą.

Niedogodności :

  • Słaba dystrybucja, jeśli 𝑚 M nie jest wybierany mądrze.

2. Metoda mnożenia

W metodzie mnożenia stała 𝐴 A (0 M aby uzyskać wartość skrótu.

H ( k )=⌊ M ( kA mod1)⌋

Gdzie ⌊ ⌋ oznacza funkcję podłogi.

Zalety :

  • Mniej wrażliwy na wybór 𝑚 M .

Niedogodności :

  • Bardziej złożona niż metoda dzielenia.

3. Metoda środkowego kwadratu

W metodzie środkowokwadratowej klucz jest podnoszony do kwadratu, a środkowe cyfry wyniku są traktowane jako wartość skrótu.

transmisja medialna

Kroki :

  1. Kwadratowy klucz.
  2. Wyodrębnij środkowe cyfry kwadratu wartości.

Zalety :

  • Tworzy dobrą dystrybucję wartości skrótu.

Niedogodności :

  • Może wymagać większego wysiłku obliczeniowego.

4. Metoda składania

Metoda składania polega na podzieleniu klucza na równe części, zsumowaniu części, a następnie przyjęciu modulo względem 𝑚 M .

Kroki :

  1. Podziel klucz na części.
  2. Zsumuj części.
  3. Weź modulo 𝑚 M sumy.

Zalety :

  • Proste i łatwe do wdrożenia.

Niedogodności :

  • Zależy od wyboru schematu partycjonowania.

5. Kryptograficzne funkcje skrótu

Kryptograficzne funkcje skrótu zostały zaprojektowane tak, aby były bezpieczne i są używane w kryptografii. Przykłady obejmują MD5, SHA-1 i SHA-256.

Charakterystyka :

  • Opór obrazu wstępnego.
  • Drugi opór obrazu wstępnego.
  • Odporność na kolizje.

Zalety :

  • Wysoki poziom bezpieczeństwa.

Niedogodności :

alfabet jako cyfry
  • Intensywne obliczeniowo.

6. Uniwersalne haszowanie

Haszowanie uniwersalne wykorzystuje rodzinę funkcji skrótu, aby zminimalizować ryzyko kolizji dla dowolnego zestawu danych wejściowych.

H ( k )=(( A k + B )przeciwko P )przeciwko M

Gdzie A I B są losowo wybranymi stałymi, P jest liczbą pierwszą większą od M , I k jest kluczem.

Zalety :

  • Zmniejsza prawdopodobieństwo kolizji.

Niedogodności :

  • Wymaga więcej obliczeń i pamięci.

7. Idealne haszowanie

Idealne mieszanie ma na celu utworzenie bezkolizyjnej funkcji skrótu dla statycznego zestawu kluczy. Gwarantuje, że żadne dwa klucze nie będą miały tej samej wartości.

Typy :

  • Minimal Perfect Hash: Zapewnia, że ​​zakres funkcji skrótu jest równy liczbie kluczy.
  • Nieminimalne idealne mieszanie: zakres może być większy niż liczba kluczy.

Zalety :

Podział łańcucha w c++
  • Żadnych kolizji.

Niedogodności :

  • Skomplikowane w budowie.

Wniosek

Podsumowując, funkcje skrótu są bardzo ważnymi narzędziami, które pomagają szybko przechowywać i znajdować dane. Znajomość różnych typów funkcji skrótu i ​​prawidłowego ich używania jest kluczem do lepszego i bezpieczniejszego działania oprogramowania. Wybierając odpowiednią funkcję skrótu do zadania, programiści mogą znacznie poprawić wydajność i niezawodność swoich systemów.