Przykład 1
- n 10000
- 32 bity
0.011642
Jakie P kolizji przy 10000 i 32 bitach? 0.011642. Birthday, nie atak.
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.
Wprowadź dane i kliknij Oblicz.
Prawdopodobieństwo kolizji hasha na tej karcie to przybliżenie paradoksu urodzin. 10000 i 32 bity dają 0.011642. 100000 i 32 dają 1. 2000000 i 64 dają 1.0842e-7. Karta 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.
p ≈ 1 − exp(−n(n−1)/(2×2^b)). Przybliżenie urodzin, nie atak na hash.
Birthday p ≈ 1 − exp(−n(n−1)/(2×2^b)). 10000 i 32 dają 0.011642. To nie atak.
0.011642
Jakie P kolizji przy 10000 i 32 bitach? 0.011642. Birthday, nie atak.
1
Jakie P przy 100000 i 32? 1.
1.0842e-7
Jakie P przy 2000000 i 64? 1.0842e-7.
0.011642. Przybliżenie urodzin, nie atak.
1. Duże n przy krótkim skrócie saturuje kartę.
1.0842e-7. Ten sam wzór, dłuższy skrót.
Nie. Karta nie szuka kolizji w funkcji. Samo P z n i b.
Są w fill. Extras trzymają P z n i b, z log10 wyłączonym.
To przybliżenie 1 − exp(...). Nie enumeracja par.
Tam 12 i 95 dają 78.8 bits. Tu 10000 i 32 dają 0.011642.
Nie. n i bity muszą być dodatnie.
Nie. Tylko P kolizji z paradoksu 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.
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".
| Algorytm | Długość (bity) | Status |
|---|---|---|
| CRC32 | 32 | Kontrola integralności, nie kryptograficzny. |
| MD5 | 128 | Złamany kryptograficznie — nie używać do bezpieczeństwa. |
| SHA-1 | 160 | Wycofywany — praktyczne kolizje wykazane od 2017 r. |
| SHA-256 | 256 | Powszechny standard, uznawany za bezpieczny. |
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.