Apropo, mi se pare că este chiar mai important să alegi alfabetul cu mintea. De exemplu, nu aș include în ea simboluri prea asemănătoare - 0 și O, 1 și l și eu și altele. În plus, sensibilitatea cazului nu este, de asemenea, cel mai bun "efect secundar".
Aceasta se referă la algoritmul în care inițial toate legăturile vor avea aceeași lungime. Firește, o astfel de varietate de opțiuni nu este infinită, dar are o dimensiune admisibilă.
Sau, desigur, este posibil și un algoritm care va începe cu URL-uri scurte și dacă setul se termină - va fi folosit un alt caracter.
Principalul lucru nu este identificatorii numerici. Ei bine, există legături de tipul pe care le-am dat ca un exemplu: bit.ly, clck.ru.
Și ceea ce împiedică să ia MD5 de la actuala unikistayma și să taie pe lungime, să ia, să spunem, primele 5 caractere?
Faptul că MD5 este atât de unic doar la întreaga sa lungime.
MD5 completă sau decupată - trebuie încă să verificați prezența cifrului generat în baza de date. Aici ar trebui să vorbim despre probabilitatea de a repeta cifrul a două linii diferite. Și cu cât codul este mai scurt, cu atât este mai probabil această probabilitate. Și nici un alt algoritm nu va reduce această probabilitate cu aceeași distribuție uniformă a rezultatelor de criptare. Prin urmare, poate fi folosită întreruperea MD5. Dar este mai bine să nu luați md5 decât din timp, ci din URL-ul însuși, de exemplu. Dacă nu sunteți sigur de uniformitatea md5, puteți folosi un generator de numere aleatorii și apoi puteți converti numerele în litere după codul lor. În orice caz, vor exista repetări. Acestea pot fi eliminate prin simpla mărire cu una până când cifrul devine unic. Cu distribuție uniformă, nu este nevoie să creșteți cifra de mai multe ori. Să presupunem că aveți 45 de milioane de combinații și 40 dintre ei sunt ocupați. Apoi, în medie, fiecare 8 celule este liberă. Și așa va fi în practică.