Daniel Częstki

Daniel Częstki senior php developer

Temat: coś ala MD5 ale generujące krótszy ciag znaków

czy jest taka funkcja w PHP która generuje z zapodanego ciągu unikalny kod ale taki żeby nie był krótszy niż ten generowany przez md5
Krystian O.

Krystian O. IT Project Manager w
Blue Services Sp. z
o.o.

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Daniel Częstki:
unikalny kod ale taki żeby nie był krótszy niż ten generowany

to w końcu krótszy czy nie krótszy?

jak krótszy to co za problem dać:

substr(md5($zmienna),0,10)

i masz w md5 tylko 10 znaków

konto usunięte

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Jeśli dłuższy lub równy to: http://pl.php.net/crc32, http://pl.php.net/sha1 etc. ogólnie większość z obsługiwanych przez to rozszerzenie.
Sławomir Gajowniczek

Sławomir Gajowniczek Nowe doświadczenia

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Daniel Częstki:
czy jest taka funkcja w PHP która generuje z zapodanego ciągu unikalny kod ale taki żeby nie był krótszy niż ten generowany przez md5

Żaden generowany przy pomocy funkcji hashujących ciąg znaków nie jest unikalny - zawsze moze się powtórzyc dla innego hashowanego ciągu.

MD5 zapewnia taką długość ciągu wynikowego, którą można uznać za bezpiecznie unikalną.

Jeżeli chcesz zmniejszyć ciąg, musisz się liczyć z większym prawdopodobieństwem kolizji.

Oprócz funkcji MD5 i SHAxxx jest CRC32. Możesz także zastanowić sie czy do Twojego zastosowania nie nadadza sie funkcje base32/64 które jednak służą do serializacji.

Innym przykładowym rozwiązaniem jest napisanie własnej funkcji. W końcu to prosta matematyka modularna wchodzi w grę. przykład http://www.ozoneasylum.com/31034
Daniel Częstki

Daniel Częstki senior php developer

Temat: coś ala MD5 ale generujące krótszy ciag znaków

dla mnie wazne jest aby ciag sie nie powtorzyl

konto usunięte

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Daniel Częstki:
dla mnie wazne jest aby ciag sie nie powtorzyl
Przy funkcjach skrótu(md5, sha1,...) nie jest to możliwe- taki sam skrót dla dwóch wyrażeń prędzej, czy później da się znaleźć.
Jeśli nie zależy Ci na bezpieczeństwie, to żeby uzyskać pożądaną długość możesz dane jakoś posolić i zakodować w base64 - ale to jest, tak jak napisał Sławomir Gajowniczek- odwracalne.
Sławomir Gajowniczek

Sławomir Gajowniczek Nowe doświadczenia

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Daniel Częstki:
dla mnie wazne jest aby ciag sie nie powtorzyl

To zrob cokolwiek ale nie tnij MD5, bo nie o to chodzi. A dlaczego nie chcesz MD5? W końcu to _tylko_ 32 znaki a nie 256 czy 1024.

==EDIT==
Źle przeczytałem... Ty chcesz dłuższy niz MD5. No to jest SHA256 np.Sławomir Gajowniczek edytował(a) ten post dnia 30.03.10 o godzinie 14:31
Robert B.

Robert B. Web Development
Manager

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Daniel Częstki:
dla mnie wazne jest aby ciag sie nie powtorzyl
A uuid (myslq) czy też uniqid (php: http://pl2.php.net/manual/en/function.uniqid.php) ?

konto usunięte

Temat: coś ala MD5 ale generujące krótszy ciag znaków

A potraktować czymś kodującym + substr + sól? Chyba najłatwiejsza metoda nieprawdaż?

konto usunięte

Temat: coś ala MD5 ale generujące krótszy ciag znaków

Polecam Blowfish
Przykład - http://www.chilkatsoft.com/p/php_blowfish.asp

konto usunięte

Temat: coś ala MD5 ale generujące krótszy ciag znaków

By mieć 100% pewność unikalności dowolnej funkcji hashującej trzeba dopisać samemu obsługę kolizji. Długość wygenerowanej wartości decyduje tylko i wyłącznie o statystycznej możliwości powtórzeń. Przy czym oczywiście można mieć pecha i już za drugim razem mieć powtórzenie...

Warto zrobić testy na "żywych" danych jak często dwa różne ciągi dadzą taki sam wynik (zależy to od liczności, ale też od rodzaju danych).



Wyślij zaproszenie do