Eindeutige 5stellige ID erzeugen

Verstehe ich Dich also so, dass Du lediglich einen fixen Buchstaben davor setzen willst, damit es HTML-konform ist..?
Nein, du wolltes das weil du glaubst, dass dadurch "die Stochastik nicht beschränkt" wird.
chmee hat gesagt.:
Wenn diese ID als ID in einem HTML-Knoten benötigt würde, täte ich ein Zeichen (aus Gründen der Funktionsfähigkeit) vorsetzen anstatt die Stochastik zu beschränken.

Wenn also ein ID-Name mit den Zeichen "0..9" und "a..z" und einer Länge von 5 Zeichen gebildet werden soll, dann gibt es folgende Möglichkeiten:

  • Führende Leerzeichen im Namen sind erlaubt. Damit gibt es insgesamt (36^5 = ca. 60,5 Mio.) verschiedene Zeichenkombinationen bei der Namensbildung. So können die Namen dann aussehen:
Code:
koadz,  cs9o, fogh9, yl7o2,  gcik,
q6l3u, 2bwt5, rgena,    69,   6um,
  hx5, e32s5, ad1v2, x2u01,  c5ba,
t9ukm, c1y30,   523, nrkhj, zbcip
  • Im Namen sind keine führenden Leerzeichen erlaubt, dann gibt es (36^5 - 36^4 = ca. 58,8 Mio.) verschiedene Zeichenkombinationen für den ID-Namen. So können die Namen dann aussehen:
Code:
vs1c3, zbqir, roaxx, zd74g, 2kg4a,
ts8w1, 3co6f, k30vs, iyaxl, o6any,
6ksp2, wmgar, myqa1, ywich, 5mszt,
an3vd, 94unm, pvifn, latkp, eam3l
  • Wenn als erstes Zeichen im Namen nur die Zeichen "a..z" erlaubt sind, dann gibt es (36^5 - 10*36^4 = 26*36^4 = ca. 43,7 Mio.) Zeichenkombinationen. So können die Namen dann aussehen:
Code:
e9od2, sgw7m, fx17n, xi1th, zh9f6,
lk5lj, veyd5, evxfa, a4gf1, ywu68,
jfuyd, hr3pu, c50cn, fpoxn, lfhzd,
ysbp4, ogo80, s5gvt, dtmg3, jocd6

  • Wenn ein Name mit nur 4 Zufallszeichen erzeugt und ein konstantes Zeichen davorgesetzt wird, dann kommen (36^4 - 36^3 = ca. 1,6 Mio.) Zeichenkombinationen zur Anwendung. So können die Namen dann aussehen:
Code:
dz6bc, ddzrq, dw4q5, d70zh, dus1n,
di870, dnbq5, d35se, dvich, dlas6,
druly, dh9tg, dvwcd, dm45s, dvhi1,
d4ip6, d8z5s, d22y9, d2iiw, d7k22


Vielleicht ist so erkennbar, wo "die Stochastik beschränkt" wird.

, um wieviel sich die Suchzeit verkürzt, wenn man zB 10 Suchdurchgänge/sek ansetzt.
Ich weiß auch gar nicht was du suchen willst. Die ID-Namen werden generiert ohne zu suchen.
 
Zuletzt bearbeitet:
Mein Ansinnen war lediglich, bei einem BruteForce-Angriff über die HTML-Schnittstelle/API die Chance auf ein gefundenes Token im Bereich der Aussichtslosigkeit zu halten. Dennoch bin ich mit Deinen Rechnungen nicht ganz glücklich. zB ist das Leerzeichen (bis Dato) kein Teil des Zeichenumfangs.

(Leerzeichen wäre ein weiteres Symbol im Zeichenschatz, das würde den Wert auf 37 erhöhen, ergo 37^5)

5 Zeichen a-z0-9 und Space = 37^5 = 69Mio
5 Zeichen a-z0-9 = 36^5 = 60,5 Mio
1 Zeichen a-f und 4 Zeichen a-z0-9 = 5* 36^4 = 8,3 Mio
4 Zeichen a-z0-9 = 36^4 = 1,6Mio

(siehe 3. Rechnung, da sind die Beispiele falsch, da Du erstes Zeichen a-f eingeschränkt hast)

Erweiterung um Großbuchstaben:

5 Zeichen a-zA-Z0-9 = 62^5 = 916Mio

Und jetzt war mein simpler Gedanke, es werden binnen eines Tages 1000 Token vergeben, nach 7 Tagen wird refreshed - im Schnitt gibt es also ~3.500 gültige Token. Heisst also, bei 36^5 Möglichkeiten ist die Erfolgschance 36^5/3500 = ~17.000. Nach statistisch 50% (8500) ist mit BruteForce ein Erfolg zu vermelden -> Bei 2 Versuchen/Sekunde ist nach 4250 Sekunden (70 Min) das erste gültige Token gefunden. Gibt der Server 10 Versuche her, ist es nach 14 Minuten geschehen.

Wir (ich) diskutieren grad einen Aspekt der Sicherheit, 5 Zeichen á 36 Symbolmöglichkeiten sind deutlich zu wenig um Sicherheit herzustellen. Wenn es "nur" um eine ID geht, die für eine zeitweilige Identifizierung herhalten soll, sind diese 5 Zeichen, wie auch immer sie geartet sind, völlig ausreichend.

mfg chmee
 
Hallo chmee,

danke für den Hinweis auf den Schreibfehler in der dritten Rechnung. Richtig ist natürlich
365 - 10*364 = 26*364 = ca. 43,7 Mio.
Ich habe das inzwischen korrigiert. Eigentlich schade, dass wir aneinander vorbei reden.
 
Zuletzt bearbeitet:
Na, ich hab Deinen ersten Text nochmal gelesen. Ich hab mich letztlich nur (ob des Überfliegens) an den "weniger als 5 Zeichen" aufgehangen. Was Du aber gezeigt hast (was ich auch nicht wusste), dass man Zufallsfolgen mittels rand() und base_convert() erzeugen kann, die nicht nur aus Zahlen bestehen. Deswegen meinerseits ein Sorry für das vorschnelle Gegensprechen. Du bist an der Ausgangsfrage näher als ich :))

mfg chmee
 
Alles klar,
der Beitrag von cPoly hatte mich darauf gebracht. Leider habe ich das erst im November lesen können.
 
Hallo,
wie bekomm ich den eine ID hin welche sich auch bei einem reload nicht mehr verändert.
Z.B. wenn eine Formularseite neugeladen wird und ich in den namens-attributen ne eindeutige ID benötige welche aber dynamisch generiert werden muss.

Gruß
 
Zurück