![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ja mam takie pytanie OT. Hashe przeciez mosza sie powtazac skoro md5 koduje dowolnej dlugosci string do 32 znakow. Wiec jak to jest, md5 polega na bardzo malym prawdopodobiestwie powtorzenia sie hasha? Przeciesz wlasciwie nie ma innej mozliwosci przy takim rozwiazaniu. Przy duzych listach hasel takie rozwiazanie wydaje sie niedopuszczalne. Moze ktos mi to wyjasnic?.
Wydzielilem moj post, tutaj chyba lepiej pasuje ![]() md5(print_r($this,1)); ?>[/php:1:e515c1e4b4] Problem w tym ze takich wpisow moze byc naprawde duzo a string zwrocony przez print_r jest dosyc duzy. I wlasnie sie zastanawiam jakie jest prawdopodobienstwo powtorzenie sie hasha. -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 566 Pomógł: 18 Dołączył: 23.08.2003 Skąd: Łomża Ostrzeżenie: (0%) ![]() ![]() |
hmm w duzym lotku jakie jest prawdopodobienstwo trafienia 6?? jeden do kilku miliardow jak sie nie myle (no moze do milionow). a tutaj jeszcze do kwadratu....
-------------------- *Note: No animals were killed durning the construction of this post.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat hmm w duzym lotku jakie jest prawdopodobienstwo trafienia 6?? jeden do kilku miliardow jak sie nie myle (no moze do milionow). a tutaj jeszcze do kwadratu....
Twojej odpowiedzi najmniej sie spodziewalem za to jej tresc jakos mnie nie zaskoczyla :? . Roznica jest taka ze w duzym lotku skreslasz tylko szesc cyferek i losujesz z 45 (chyba), a tutaj twoje skreslenie jest dowolne i zawsze uzuskujesz 32 znakowy srting. Nawet jesli przwdopodobienstwo jest male to i tak powtazalnosc hasha ulatwiala by znacznie BRUTE FORCE. Ale jak juz wspomnialem nie chodzi mi o hasla ktore zgory maja ustalony przedzial dlugosci ale o stan obiektu ktory moze byc naprawde bardzo rozny, obiekt obsluguje baze danych (generowanie zapytan) i naprawde nie chcialbym aby do uzytkownika trafilo nie to zapytanie co trzeba. -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Ale wydaje mi się że w tym przypadku, chyba po raz pierwszy na tym forum, odpowiedz przedmówcy była poprawna.
Zauważ, że liczba o 32 znakach to całkiem spora wartość. A jeśli zamiast cyfr mamy litery - kombinacji pojawia się odpowiednio więcej. Nie zamierzam tego przeliczać. Natomiast zastanawia mnie coś innego. Jeśli chodzi o przechowywabnie wyników zapytania, to nie lepiej by było hashować samo zapytanie, zamiast całego obiektu? Efekt powinien być ten sam, ale a sam proces o wiele prostszy. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale wydaje mi się że w tym przypadku, chyba po raz pierwszy na tym forum, odpowiedz przedmówcy była poprawna.
Zauważ, że liczba o 32 znakach to całkiem spora wartość. A jeśli zamiast cyfr mamy litery - kombinacji pojawia się odpowiednio więcej. Nie zamierzam tego przeliczać. No niby tak tylko ze tak naprawde dla mnie nie liczy sie ilosc kombinacji tylko powtarzalnosc generowanego ciagu, ktory przeciez nie jest generowany losowo. Teoretycznie jednemu hashowi odpowiada niskonczenie wiele ciagow znakow. Wiem ze w praktyce to wyglada inaczej ale jaki jest przedzial niepowtarzalnosci? Od zera do tysiaca znakow, czy zero do miliona, czy moze jeden do dziesieciu milionow ?Nawet jesli metoda na takich przedzialach jest pewna to z czystej ciekawosci chetnie bym uslyszal odpowiedz bo jakos dziwnie widze to ze md5 "1" i md5 tego posta moga miec ten sam hash (i do tego z prawdopodobienstwem ma to malo wspolnego). Cytat Natomiast zastanawia mnie coś innego. Jeśli chodzi o przechowywabnie wyników zapytania, to nie lepiej by było hashować samo zapytanie, zamiast całego obiektu? Efekt powinien być ten sam, ale a sam proces o wiele prostszy.
O to chodzi ze generowanie zapytania jest dosyc czasochlonne i jesli znalbym stan obiektu (wszystkie zmienne) to moglbym pominac generowanie i od razu zwracac gotowe zapytanie. I nie chodzi tu o przechowywanie wynikow tylko zapytan ![]() -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
http://www.ietf.org/rfc/rfc1321.txt -- MD5
Lub możesz użyć [manual:e2226b32db]sha1[/manual:e2226b32db] - zwraca 40 znakowy kod szesnastkowy. http://www.ietf.org/rfc/rfc3174.txt Zapoznaj sie z tymi dokumentami, a nabierzesz przekonania o znikomej (bardzo mało prawdopodnj) powtarzalności - gdyby tak nie było, to by nie była ta funkcja tak powszechnie używana do kodowania haseł jak teraz (a hasła są krótkie, powtarzalne itd). Im dłuższy ciąg podstawisz do md5 tym lepszy wynik. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Przy użyciu 36 znaków (liter bez ogonków i cyfr) otrzymujemy prawdopodobieństwo trafienia tego samego ciągu jak 1:36!(silnia) czyli 1:3,719933268x10^41. To naprawdę duuuuuża liczba. A pozatym string, który podlega funkcji md5 jest hashowany 4 albo 5 razy (nie pamietam)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
panowie co to znaczy cachowania?
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
ale przeciez cachowanie z hashowaniem nie ma nic wspolnego, wiec goped nie rozumiem skad twoj post :?:
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 19.11.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat ale przeciez cachowanie z hashowaniem nie ma nic wspolnego
Może mieć i to sporo. Ja np. cache-uje elementy stron na podstawie różnych parametrów z których liczę hash md5, taki hash pozwala mi utworzyć katalog w którym trzymam plik. Np hash w postaci 01234567890 przekształcam na katalog z plikie 0/1/2/3/01234567890 -------------------- Enceladus
Warsztat: bez warsztatu Aktua |
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat ale przeciez cachowanie z hashowaniem nie ma nic wspolnego, wiec goped nie rozumiem skad twoj post :?:
W tym przypadku ma ![]() Cytat Chce wykozystac md5 do cachowania, a konkretniej do tworzenia stinga odpowiadajacego stanowi obiektu
Dziekuje wszystkim za odpowiedz, przekonaliscie mnie do tego ze md5 moze byc calkowicie bezpiecznym mechanizmem (ale i tak dam cachowanie na ograniczony przedzial czasu, przezorny zawsze ubezpieczony ![]() pozdrawiam rzSeattle update Widze ze pan enceladus stosuje podobna metode ![]() -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 0 Dołączył: 28.11.2003 Skąd: gliwice Ostrzeżenie: (0%) ![]() ![]() |
rzseattle, moglbys mi wytlumaczyc oco w tym chodzi dokladniej? prosze....
-------------------- www.motorower.com.pl - kup sobie cos :]
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat rzseattle, moglbys mi wytlumaczyc oco w tym chodzi dokladniej? prosze....
chodzi o to ze mozesz stworzyc unikalnego stringa dla wielu zmiennych, czyli unikalnego dla odpowiednich waronkow zewnetrznych, jesli te warunki sie powtorza (porownojesz wygenerowane hashe) to mozesz pominac obliczenia ktore "duzo kosztuja" i od razu zwrocic gotowe wyniki. System bardzo przydatny dla optymalizowania duzych serwisow, gdzie dokladnie okreslona czynnosc pojawia sie co chwile, wtedy masz ja juz gotowa w zanadrzu. -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
dobra dołączę się do dyskusji...ktoś powiedział, że mogę się powtórzyć hashe...
polcizmy jak to jest możliwe... mamy więc 32 znaki każdy ma możliwe wartości od 0 do 15, co daje 16 możliwych wartosći...łącznie uzyskujemy więc 16 do 32 potęgi różnych wartości reprezentowanych rpzez taki ciąg... teraz zapiszmy to w systemie dwójkowym to mamy 2 do 4 do 32 potęgi a więc 2 do 128 potęgi... wiem, że 2 do 32 potęgi to lekko ponad 4 miliardy, dla uproszczenia przyjmijmy, żę są to 4 miliardy (dla uproszczenia przyjmuje, że tylu jest ludzi na świecie - a po co to dalej)... 2 do 128 potęgi to to samo co 2 do 32 do 4...czyli 4 miliardy do potęgi czwartej obrazowo przedstawiamy to tak : każdy człowiek na Ziemi musiałby napisać 4 miliardy książek, każdą składającą się z 4 miliardów rozdziałów, po 4 miliardy słów każdy... wtedy by zostały zużyte wszystkie możliwości... oczywiscie to jest tylko i wyłącznie obraz... w praktyce przyjmijmy, że prawdopodobieństwo powtórzenia sięhasha wynosi 1 do miliona... a więc, żeby dwa takei same hashe były wygenerowane (jeśli używamy ich np. do sesji itp) to w danym momencie musiałby ponad milion ludzi oglądać naszą stronkę... powiem szczerze, że nie znam strony która miałaby taką oglądalność... a teraz wracajać już cąłkiem do tematu... to czy hash się powtórzy czy też nie zależy od tego jaki ciąg jest poddany do hashowania... dobrą praktyką jest podawać dany ciag (np. login, ip itp) + pewna wartość salt (np. aktualny czas -dzień, miesiać, rok, godizna, minuta, sekunda - lub microtime)...wtedy ryzyko wystapienia tych samych hashów drastcyznie siezmiejsza.... pozdrawiam |
|
|
![]()
Post
#16
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat dobrą praktyką jest podawać dany ciag (np. login, ip itp) + pewna wartość salt (np. aktualny czas -dzień, miesiać, rok, godizna, minuta, sekunda - lub microtime)...wtedy ryzyko wystapienia tych samych hashów drastcyznie siezmiejsza....
To juz powiedzialem we wczesniejszych postach. A co do reszty to nie jest tak jak podales. No iby prawdopodobienstwo powtorzenia sie ciagow jest znikome ale dyrastycznie sie zwieksza w przypadku ciagow o roznej dlugosci - wiec to nie jest to prawdopodobienstwo ktore podales. Zrozom to ze 32 znakowy string odpowiada wszystkiemo wiec bardzo trodno okreslic jest gdzie konczy sie unikalnosc a zaczyna powtarzalnosc chyba ze opanowalo sie algorytmy md5 - a jesli tak to chcialbym uslyszec konkretna odpowiedz. -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wiesz to co ja pisałem to było luźne rozumowanie...
A co do powtarzalności to powiem Ci coś takiego: czytałem wypowiedźjednego gostka, który prowadzi stronę i ma na niej dość ciekawy system statystyk - otóż każda odwiedzina jest zapisywana w bazie a aby łatwo się poruszać po niej używa hashowania za pomocą md5...jak się wypowiada do tej pory miał ponad 2 miliony wizyt i jeszcze nigdy hash mu się nie powtórzył... nie wiem na ile można mu wierzyć...przyznam szczerze, że md5 to zbyt wysoka matematyka jak dla mnie... ale to, że jest często używany oznacza, że jest on chyba dobry... aha a jeśli zaś chodzi o hashowanie ciagów różnej długości - możesz stosować pewien stary trick...ustalasz jaka może być maksymalna długość tego ciągu...wiesz, że na niego skłąda sie np. numer ip, data i godzina - wiesz więc że najdłuższy ciag możliwy będzie miał n liter...ale może mieć takze mniej...to stosujesz uzupełnianie do n znaków...a gdy przypadkiem wyjdzie wiecej niż n znaków to obcinanie... dzięki tej sztucce uzyskujesz ciag do hashowania o stałej długości co zwiększa niezawodoność... a tą liczbę n najlepiej powiększyć dla pewności np. o 5-10 w zależnosći od tego jak długi jest ciąg...dodatkowo przy rozciąganiu należy wrzucać przypadkowe znaki... |
|
|
![]()
Post
#18
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
@Prometeus
Dzieki ci za te odpowiedzi ale chcialem sie przekonac na ile prawdopodobne jest powtorzenia sie hasha stworzonego przez md5 , inne zabezpieczenia juz wprowadzilem ![]() Cytat czytałem wypowiedźjednego gostka, który prowadzi stronę i ma na niej dość ciekawy system statystyk - otóż każda odwiedzina jest zapisywana w bazie a aby łatwo się poruszać po niej używa hashowania za pomocą md5...jak się wypowiada do tej pory miał ponad 2 miliony wizyt i jeszcze nigdy hash mu się nie powtórzył...
to akurat jest bez znaczenia dla stringow dla BARDZO zmiennej dlugosci - dlatakich stringow prawdopodobienstwo wystapienia jest o wiele wieksze. No ale reszta "dobrych" rad to w zasadzie OT bo - czas zycia okeslinego hascha juz wprowadzilem -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Sorry, że nie pomogłem...
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat Sorry, że nie pomogłem...
To akurat nie prawda, bardzo cieszy mnie dyskusja odnosnie kazdego tematu, ale przy "dawaniu rad" przydalo by sie przeczytac wczesniejsze posty, ktore w tym przypadko mowia ze do hasha dobrze jest dodac jakies zewnetrzne dane np date. -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 08:58 |