Aktywne Wpisy
dqdq1 +258
Pewnie mnie zaraz zhejtujecie ale nie czujecie się jak cuck ciagle na zdalnym kiedy wasza dziewczyna chodzi do pracy? To chłop powinien być tym którego nie ma na chacie bo robi ruchy a nie pod kocykiem cały czas w domku z kubeczkiem kawy jak ciepła klucha czeka na powrót swojej ukochanej XD I może jeszcze obiadek zrobi, pozmywa i zrobi pranie
#programowanie #programista15k #pracazdalna
#programowanie #programista15k #pracazdalna
Ile commitów potrzebujesz w repozytorium, zanim możesz zacząć martwić się o kolizje?
Skrót SHA-1 jest ciągiem 40 znaków heksadecymalnych... czyli 4 bity na znak razy 40... 160 bitów. Teraz wiemy, że 10 bitów to w przybliżeniu 1000 (dokładnie 1024), co oznacza, że istnieje 1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 różnych haszy SHA-1... 1048.
Co to jest odpowiednik? Cóż, Księżyc składa się z około 1047 atomów. Więc jeśli mamy 10 księżyców... i losowo wybierzesz jeden atom na jednym z nich... a następnie pójdziesz dalej i wybierzesz losowy atom na nich ponownie... wtedy prawdopodobieństwo, że wybierzesz ten sam atom dwa razy, jest prawdopodobieństwem, że dwa dane commit'y git'a będą miały ten sam hash SHA-1.
Rozwijając to, możemy zadać pytanie...
Ile commitów potrzebujesz w repozytorium, zanim zaczniesz się martwić o kolizje?
To odnosi się do tak zwanych "ataków urodzinowych", które z kolei odnoszą się do "Paradoksu urodzinowego" lub "Problemu urodzinowego", który mówi, że kiedy wybierasz losowo z danego zbioru, potrzebujesz zaskakująco mało wyborów, zanim stanie się bardziej prawdopodobne, że wybrałeś coś dwa razy. Ale "zaskakująco mało" jest tutaj bardzo względnym terminem.
Wikipedia ma tabelę prawdopodobieństwa kolizji Paradoksu Urodzinowego. Nie ma tam wpisu dla 40 znakowego hasha. Ale interpolacja wpisów dla 32 i 48 znaków daje nam zakres 5*1022 commitów git z prawdopodobieństwem 0,1% kolizji. To jest pięćdziesiąt tysięcy miliardów miliardów różnych commitów, lub pięćdziesiąt Zettacommits, zanim osiągniesz nawet 0,1% szansy, że masz kolizję.
Suma bajtowa samych hashów dla tych commitów byłaby większa niż wszystkie dane generowane na Ziemi przez rok, co oznacza, że musiałbyś wypuszczać kod szybciej niż YouTube wypuszcza filmy. Powodzenia z tym :D
Chodzi o to, że o ile ktoś nie powoduje kolizji celowo, prawdopodobieństwo, że jedna z nich zdarzy się losowo jest tak oszałamiająco małe, że możesz zignorować ten problem.
#programowanie #programista15k #ciekawostki #technologia
@mozesz_mi_kliknac co? Unikatowych? Nie ma tyłu w Tablicy Mendelejewa. A jeśli w sumie z 1047 to jest dość mały...
Albo inaczej, taka kolizja mogłaby być wyłapana, przez wystąpienie 2x tego samego hasha w łańcuchu bloków.