![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Buduję aplikację w której obiekt byłby identyfikowany na podstawie unikalnego id w postaci xxx-xxx-xxx-xxx, gdzie x to znak alfabetu a-z lub cyfra. id to miałoby być na tyle unikalne, żeby nie dało się zgadnąć. URL będzie wyglądał tak: www.mojadomena.pl/books/394-a34-g34-dd2 W jaki sposób zahashować taki id do bazy? Chodzi o taki algorytm, żeby nie było kolizji, więc chyba md5 odpada. Wygenerowany hash ze względu na unikalność może być równie długi lub dłuższy, gdyż ze względu na założenia nie może być krótszy. To wiem. Problem tylko skąd wziąć taki algorytm? Zna ktoś może jakiś? A może zwyczajnie pozamieniać litery w stylu znak klucz -> znak wartość? Tylko wtedy chyba na podstawie kilku "tokenów" i ich zahaszowanych wersji da się złamać kod. Czyż nie? Ten post edytował SnakeEater 26.03.2010, 15:26:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję wszystkim, no więc zrobię chyba tak:
System wylosuje klucz dla danej osoby identyfikator w formie xxx-xxx-xxx-xxx. x to litera lub cyfa. będzie tego chyba 36 ^ 10=4 738 381 338 321 616 896, a więc całkiem sporo. Jeżeli w bazie będzie 100 000 rekordów to szansa trafienia to będzie około 1/47 383 813 383 216. Jeżeli przyjmie się, że nastąpi 10 prób na sekundę to wyszło mi, że zgadnie się jedno id po 150 253 latach, a więc nie jest źle. Do tego czasu na pewno zajrzę na serwer i wytnę go na stałe (IMG:style_emoticons/default/winksmiley.jpg) Dodatkowo po kilku próbach w krótkim czasie z jednego ip dodam konieczność odczekania kilka sekund. Kluczem będzie taka wartość (unikalny klucz z indeksem do wyszukiwania): identyfikator = md5( salt + primary_key + wylosowany Identyfikator). W ten sposób chyba klucz będzie "prawie" unikalny. Problem tylko jest taki, że ten klucz będzie bazował na głównym i nie wiem czy to bezpiecznie, bo jak tamten się zmieni... Może się zmienić? Użytkownik podczas tworzenie dla siebie takie czegoś w stylu konta ujrzy ten identyfikator i zapisze sobie na kartce. Po wpisaniu tego w formularzu wyskoczy mu cała historia. Te haszowanie to tylko dla bezpieczeństwa jakby ktoś do bazy się dorwał. Dziękuję wszystkim za pomoc. Ten post edytował SnakeEater 29.03.2010, 19:47:39 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 03:06 |