Generieren Sie eine zufällige Zeichenfolge mit einer bestimmten Bitgröße in Java

8

Wie mache ich das? Kann nicht einen Weg finden. SecureRandom scheint mir nicht zu erlauben, die Bitgröße irgendwo anzugeben

    
William 18.03.2011, 11:25
quelle

4 Antworten

19

Wenn Ihre Bitzahl um 8 geteilt werden kann, Sie also eine volle Bytezahl benötigen, können Sie

verwenden %Vor%

Wenn Ihnen die seltsamen Zeichen nicht gefallen, codieren Sie das Byte-Array als base64:

Verwenden Sie zum Beispiel Apache Commons Codec und tun:

%Vor%     
theomega 18.03.2011 11:30
quelle
1

Die Bedeutung von "zufälliger String" ist in Java nicht klar.

Sie können zufällige Bits und Bytes erzeugen, aber das Konvertieren dieser Bytes in einen String ist normalerweise nicht einfach machbar, da es keine eingebaute Konvertierung gibt, die alle Byte-Arrays akzeptiert und alle Strings einer bestimmten Länge ausgibt.

Wenn Sie nur zufällige Bytes wünschen, tun Sie was theomega vorgeschlagen hat und geben Sie die letzte Zeile aus.

Wenn Sie eine zufällige Zeichenfolge aus einer Reihe von Zeichen wünschen, hängt dies von der Menge ab. Base64 ist ein Beispiel für einen solchen Satz, der 64 verschiedene ASCII-Zeichen verwendet, um jeweils 6 Bit darzustellen (also stellen 4 dieser Zeichen 24 Bit dar, das wären 3 Byte.)

    
Paŭlo Ebermann 18.03.2011 14:18
quelle
1

Wenn Sie an einer zufälligen eindeutigen 128-Bit-Zeichenfolge interessiert sind, empfehle ich UUID.randomUUID ()

Alternativen wären ...

qwerty 18.03.2011 19:56
quelle
1

Ähnlich wie die andere Antwort mit einem kleinen Detail

%Vor%

Anstatt einfach die Base64-Kodierung zu verwenden, die Sie mit einem "+" am Ausgang belassen kann, stellen Sie sicher, dass sie keine Zeichen enthält, die weiter URL-kodiert werden müssen.

    
atomic_ice 04.05.2017 18:24
quelle

Tags und Links