Prawdopodobieństwo kolizji hasha

Wpisz n i bity. 10000 i 32 dają 0.011642. 100000 i 32 dają 1. 2000000 i 64 dają 1.0842e-7. Przybliżenie urodzin, nie atak.

To p ≈ 1 − exp(−n(n−1)/(2×2^b)). Nie atak na funkcję skrótu. Bity hasła są na entropii hasła.

Dane

Opcje dodatkowe (opcjonalnie)

Wynik

Wprowadź dane i kliknij Oblicz.

Jak to działa?

Prawdopodobieństwo kolizji hasha w tym kalkulatorze to przybliżenie paradoksu urodzin. 10000 i 32 bity dają 0.011642. 100000 i 32 dają 1. 2000000 i 64 dają 1.0842e-7. Kalkulator nie łamie MD5 i nie szuka preimage.

Pole hash-n jest liczbą elementów. Pole hash-b jest bitami skrótu. hash-target-p i hash-show-log10 są w fill. Wzór to 1 − exp(−n(n−1)/(2×2^b)). 10000 przy 32 bitach zostawia 0.011642. Duże n przy 32 bitach saturuje kartę do 1.

0.011642 nie jest atakiem. 1 nie znaczy, że ktoś złamał hash. 1.0842e-7 przy 64 bitach nadal jest przybliżeniem. Wpisujesz n i b sam. To nie laboratorium krypto.

Entropia hasła obok mnoży długość przez log2. Base64 liczy narzut. Tu 10000 i 32 zostają 0.011642, sam birthday.

Wpisz 10000 i 32, zostaw próg 0.01 i log10 wyłączone, potem Oblicz. Wynik to 0.011642. 100000 przy 32 daje 1.

10000 i 32 dają 0.011642. 100000 i 32 dają 1. 2000000 i 64 dają 1.0842e-7. Inne n przy 32 zmienia 0.011642.

Wzór

p ≈ 1 − exp(−n(n−1)/(2×2^b)). Przybliżenie urodzin, nie atak na hash.

Jak korzystać

  1. Wpisz n 10000 i bity 32.
  2. Zostaw próg 0.01 i log10 wyłączone. Kliknij Oblicz. Wynik to 0.011642.
  3. 100000 i 32 dają 1. 2000000 i 64 dają 1.0842e-7.
  4. To przybliżenie urodzin, nie atak.
  5. Sąsiednia kalkulator liczy bity hasła, nie kolizję.

10000 i 32 dają 0.011642

Birthday p ≈ 1 − exp(−n(n−1)/(2×2^b)). 10000 i 32 dają 0.011642. To nie atak.

Prawdopodobieństwo
Wynik P. 10000 i 32 zostawiają 0.011642. Nie laboratorium.
kolizji
Dwa wejścia, jeden skrót. 100000 i 32 dają 1. Nie preimage.
hasha
Bity w hash-b. 2000000 i 64 dają 1.0842e-7. Nie atak.

Przykłady

Przykład 1

  • n 10000
  • 32 bity

0.011642

Jakie P kolizji przy 10000 i 32 bitach? 0.011642. Birthday, nie atak.

Przykład 2

  • n 100000
  • 32 bity

1

Jakie P przy 100000 i 32? 1.

Przykład 3

  • n 2000000
  • 64 bity

1.0842e-7

Jakie P przy 2000000 i 64? 1.0842e-7.

Powiązane kalkulatory

Najczęstsze pytania

Ile przy 10000 i 32 bitach?

0.011642. Przybliżenie urodzin, nie atak.

Ile przy 100000 i 32?

1. Duże n przy krótkim skrócie saturuje kartę.

Ile przy 2000000 i 64?

1.0842e-7. Ten sam wzór, dłuższy skrót.

Czy to atak na MD5 albo SHA?

Nie. Kalkulator nie szuka kolizji w funkcji. Samo P z n i b.

Po co hash-target-p i log10?

Są w fill. Extras trzymają P z n i b, z log10 wyłączonym.

Czy 0.011642 jest dokładne?

To przybliżenie 1 − exp(...). Nie enumeracja par.

Czym to różni się od entropii hasła?

Tam 12 i 95 dają 78.8 bits. Tu 10000 i 32 dają 0.011642.

Czy zero w n liczy?

Nie. n i bity muszą być dodatnie.

Czy preimage jest na karcie?

Nie. Tylko P kolizji z paradoksu urodzin.

Źródła wiedzy

Kalkulator liczy bity, bajty albo przepustowość z Twoich liczb. Poniżej definicje bitu i SI (GUM).

Strona zaktualizowana w 2026.

Paradoks dnia urodzin

Kolizja hasha występuje, gdy dwa różne wejścia dają tę samą wartość skrótu. Przykład intuicyjny: dwa różne pliki z tą samą sumą kontrolną CRC32 — narzędzie „myśli”, że to ten sam obiekt, choć bajty się różnią.

W grupie 23 osób jest już ponad 50% szans, że dwie mają urodziny w ten sam dzień — mimo że rok ma 365 dni. To samo dzieje się z hashami: liczba par do porównania rośnie znacznie szybciej niż liczba elementów, dlatego kolizje pojawiają się dużo wcześniej, niż intuicja by wskazywała.

Wzór przybliżony

Kalkulator używa uproszczonej granicy urodzinowej: P ≈ n² / (2 × 2^b), gdzie n to liczba elementów, a 2^b to liczba możliwych wartości skrótu o długości b bitów. Wynik jest przycinany do maksymalnie 100%. Przy n = 2^(b/2) wzór daje ok. 50% — to praktyczna reguła: "połowa punktu urodzinowego to pierwiastek z liczby możliwych skrótów".

Typowe rozmiary skrótów

AlgorytmDługość (bity)Status
CRC3232Kontrola integralności, nie kryptograficzny.
MD5128Złamany kryptograficznie — nie używać do bezpieczeństwa.
SHA-1160Wycofywany — praktyczne kolizje wykazane od 2017 r.
SHA-256256Powszechny standard, uznawany za bezpieczny.

Znaczenie dla bezpieczeństwa

  • Krótkie skróty (32-64 bity) świetnie nadają się do wykrywania błędów transmisji, ale przy milionach elementów kolizje są praktycznie gwarantowane.
  • Dla identyfikatorów, deduplikacji plików czy cache — kolizja to zwykle drobna niedogodność (odporność na to zapewnia dodatkowe porównanie danych).
  • Dla podpisów cyfrowych, certyfikatów i kontroli integralności bezpieczeństwa kolizja to realne zagrożenie (atakujący może podstawić złośliwe dane o tym samym skrócie) — tam liczą się tylko algorytmy odporne kryptograficznie (SHA-256 i nowsze).

Ograniczenia przybliżenia

Wzór urodzinowy jest przybliżeniem górnej granicy — dokładne prawdopodobieństwo jest odrobinę niższe, szczególnie gdy n jest bliskie 2^b. To narzędzie liczy prawdopodobieństwo kolizji jakiejkolwiek pary, nie odporność na atak "preimage" (znalezienie danych dających konkretny, wybrany skrót) — to inny, znacznie trudniejszy problem kryptograficzny.

Przykłady

  • 10 000 elementów, hash 32-bitowy → ok. 1,16% szans na kolizję.
  • 65 536 elementów, hash 32-bitowy → dokładnie 50% szans na kolizję (punkt urodzinowy).
  • 1 000 000 elementów, hash 64-bitowy → ok. 2,7 × 10⁻⁸ — praktycznie zerowe ryzyko.