Ich habe nach einem einfach Java-Algorithmus zur Erzeugung einer pseudo-zufälligen alphanumerischen Zeichenkette. In meinem Fall würde sie als eindeutiger Sitzungs-/Schlüsselbezeichner verwendet, der "wahrscheinlich" in folgenden Fällen eindeutig ist 500K+
Generation (meine Bedürfnisse erfordern nicht wirklich etwas viel Anspruchsvolleres).
Im Idealfall könnte ich eine Länge angeben, die meinen Bedürfnissen nach Einzigartigkeit entspricht. Eine generierte Zeichenkette der Länge 12 könnte zum Beispiel wie folgt aussehen "AEYGF7K0DM1X"
.
166 Stimmen
Vorsicht das Geburtstagsparadoxon .
64 Stimmen
Selbst wenn man das Geburtstagsparadoxon in Betracht zieht, bräuchte man bei Verwendung von 12 alphanumerischen Zeichen (62 insgesamt) immer noch weit über 34 Milliarden Zeichenfolgen, um das Paradoxon zu erreichen. Und das Geburtstagsparadoxon garantiert sowieso keine Kollision, es sagt nur, dass die Wahrscheinlichkeit über 50 % liegt.
6 Stimmen
@NullUserException 50 % Erfolgschance (pro Versuch) ist verdammt hoch: Selbst bei 10 Versuchen liegt die Erfolgsquote bei 0,999. Wenn man das und die Tatsache bedenkt, dass man innerhalb von 24 Stunden VIELE Versuche machen kann, braucht man keine 34 Milliarden Zeichenfolgen, um ziemlich sicher zu sein, dass man mindestens eine davon errät. Das ist der Grund, warum einige Sitzungs-Tokens sehr, sehr lang sein sollten.
0 Stimmen
Dieser Blogpost sollte nützlich sein - Code zur Erzeugung alphanumerischer Zeichenfolgen: rationaljava.com/2015/06/
20 Stimmen
Diese 3 einzeiligen Codes sind sehr nützlich, schätze ich.
Long.toHexString(Double.doubleToLongBits(Math.random()));
UUID.randomUUID().toString();
RandomStringUtils.randomAlphanumeric(12);
26 Stimmen
@Pijusn Ich weiß, das ist alt, aber... die "50% Chance" im Geburtstagsparadoxon ist NO "pro Versuch", das heißt "50 % Wahrscheinlichkeit, dass von (in diesem Fall) 34 Milliarden Zeichenfolgen mindestens ein Paar Dubletten vorhanden ist". Sie bräuchten 1,6 sept illionen - 1,6e21 - Einträge in Ihrer Datenbank, um eine Chance von 50% pro Versuch zu haben.
0 Stimmen
Es ist besser, die
"-"
in der Zeichenkette0 Stimmen
Zufällige Zeichenkette mit Javascript, Java, Python, Rust, Bash