rodina hashovacích funkcí
Rodina hashovacích funkcí je množina více hashovacích funkcí se stejným typem vstupu a výstupu, ze které můžeme náhodně vybírat.
Intuitivní vysvětlení
Místo toho, abychom měli jednu pevnou hashovací funkci $h$, máme celou kolekci funkcí $\mathcal{H} = {h_1, h_2, h_3, \ldots}$ a při vytváření hashovací tabulky náhodně vybereme jednu z nich.
Formální definice
Rodina hashovacích funkcí $\mathcal{H}$ je množina funkcí: \(\mathcal{H} = \{h: U \to [m]\}\)
Proč se používají?
Pokud máme jen jednu pevnou hashovací funkci $h$, útočník může:
- Zjistit jakou funkci používáme
- Najít klíče, které všechny hashují na stejnou pozici
- Způsobit degradaci na $\mathcal{O}(n)$ složitost
Příklady
- rodina lineárních hashovacích funkcí
- scalar product hash family
- rodina polynomiálních hashovacích funkcí
- rodina rolling hash (pro řetezce/vektory)
Příklady složených rodin
- složená rodina rolling hash