Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]polskie ogonki i zapis ich na dysku
Forum PHP.pl > Forum > Przedszkole
faran
Witam,
Mam nazwę pliku która składa się z polskich ogonków. Nie chce zapisywać w takiej postaci pliku na dysku twardym bo różnie później bywa z przenoszeniem tego w przypadku różnych systemów plików.
Wpadłem na pomysł aby szyfrować nazwę pliku algorytmem: crc32 lub md5. Z testów mi wychodzi że crc32 jest najszybsze...
Czy taki wygenerowany kod przez crc32 lub md5 nie ma prawa się powtórzyć dla różnych nazw plików ?
Kszyhuu
Nie ma. W przypadku MD5 jestem pewien na sto procent, bo analizowaliśmy go dość dokładnie z profesorkiem. Jedyny problem jest taki, że później nie odzyskasz starej nazwy z hashu MD5. Można co prawda łamać to tablicami tęczowymi, ale odradzam. winksmiley.jpg Lepiej wtedy zapisywać to przez b64/w postaci kodu binarnego, czy coś, albo najlepiej zmienić ogonki na zwykłe litery czyli napisać funkcję ą->a etc.
faran
Ja znalazłem przed chwilą tekst z którego wynika, że może się powtórzyć:
http://republika.onet.pl/20404,16518,3,13,kursy.html
A z base 64 lub innymi tego typu problem jest w tym, że podczas konwertowania polskiego znaku znacznie zwiększ się długość nazwy. Z tego co mi wiadomo w systemie linuks maksymalna długość nazwy pliku to około 260 znaków i dlatego może to nie dać rady....
Kszyhuu
'Używając tej funkcji, zmniejszamy ryzyko wystąpienia dwóch podobnych wyników dla różnych haseł (choć to prawdopodobieństwo i tak jest bliskie zeru).'

To Cię przestraszyło? To prawdopodobieństwo nie jest bliskie zeru. Ono jest zerowe. Jeśli hash powtórzy się dla dwóch różnych ciągów znaków, to tylko dla dwóch i podobnych do
'dgskhg3567435346365436?#$^#%$dfhbsgj$#%@sd;jfaldgf436676?%*&(^sdflsdlgas%$#^%$&$%shdfhsdh#$^%$&^%&'
Dla normalnych nazw plików powielenie nazwy jest NIEWYKONALNE. smile.gif
faran
Jeszcze dla ciekawości..... Jaka jest maksymalna długość ciągu znaków w przypadku algorytmu md5, która gwarantuje niepowtarzalność wygenerowanego kodu hash ?. Chyba nie jest bez ograniczeń ?, Czy prawdą jest to, że jest ona taka jak ilość znaków wygenerowanego hash ?.
Kszyhuu
To wszystko zależy od znaków, których używasz w nazwie, ale biorąc po uwagę ilość bitów wykorzystywanych do zahashowania, liczba możliwości jest naprawdę przeogromna i dla znaków a-zA-Z1-0!@#$%^&*() sięga na pewno ponad 10^70, co daje powyżej 10^6 znaków w nazwie, więc masz gwarancję, że nie powtórzysz nazw. Nie panikuj i nie drąż. biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.