Powodem, dla którego używane są liczby pierwsze, jest zminimalizowanie kolizji, gdy dane wykazują określone wzorce.
Po pierwsze: jeśli dane są losowe, nie ma potrzeby stosowania liczby pierwszej, możesz wykonać operację modowania na dowolnej liczbie i będziesz mieć taką samą liczbę kolizji dla każdej możliwej wartości modułu.
Ale kiedy dane nie są przypadkowe, dzieją się dziwne rzeczy. Na przykład rozważ dane liczbowe, które zawsze są wielokrotnością 10.
Jeśli użyjemy mod 4, znajdziemy:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Zatem z 3 możliwych wartości modułu (0,1,2,3) tylko 0 i 2 będą miały kolizje, czyli źle.
Jeśli użyjemy liczby pierwszej takiej jak 7:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
itp
Zwracamy również uwagę, że 5 nie jest dobrym wyborem, ale 5 jest liczbą pierwszą, ponieważ wszystkie nasze klucze są wielokrotnością 5. Oznacza to, że musimy wybrać liczbę pierwszą, która nie dzieli naszych kluczy, wybór dużej liczby pierwszej to zwykle wystarczy.
Zatem błędem jest powtarzalność, powodem używania liczb pierwszych jest zneutralizowanie wpływu wzorców w kluczach na rozkład kolizji funkcji skrótu.