Ich bin auf der Suche nach einer wiederverwendbaren Funktion, die einen zufälligen Schlüssel mit druckbaren ACSII Zeichen der gewählten Länge (irgendwo von 2 bis 1000 +) generieren wird. Ich denke, druckbare ASCII-Zeichen wären 33-126. Der Schlüssel muss nicht vollständig eindeutig sein, nur einmalig, wenn er genau in der Millisekunde generiert wird (also uniqid()
wird nicht funktionieren).Was ist der beste Weg, um einen zufälligen Schlüssel in PHP zu generieren?
Ich denke, eine Kombination von chr()
und mt_rand()
könnte funktionieren.
Ist dies der richtige Weg oder ist etwas anderes die beste Methode?
Bearbeiten:uniqid()
wird auch nicht funktionieren, weil es keinen Längenparameter hat, es ist nur was auch immer PHP Ihnen gibt.
Meine Idee: Das ist, was ich kam mit:
function GenerateKey($length = 16) {
$key = '';
for($i = 0; $i < $length; $i ++) {
$key .= chr(mt_rand(33, 126));
}
return $key;
}
Gibt es Probleme mit diesem?
Andere Edit: Die meisten anderen Fragen befassen sich mit der Passwort-Generierung. Ich möchte eine größere Vielfalt an Charakteren und ich interessiere mich nicht für 1
vs l
. Ich möchte, dass die maximale Anzahl möglicher Schlüssel möglich ist.
Hinweis: Der generierte Schlüssel muss nicht unbedingt kryptographisch sicher sein.
Zufallszahlengeneratoren im Allgemeinen nicht _guarantee_ Einzigartigkeit, auch wenn "Genau zur selben Millisekunde erzeugt." Um die Eindeutigkeit zu gewährleisten, müssen Sie in der Lage sein, eine Kollision zu erkennen. – danorton
Große Warnung vor der Sicherheit hinzugefügt, sonst müsste ich jede Antwort ablehnen. Seien Sie gewarnt, dass einige der Funktionen in den Antworten binär, andere zurück Hex, andere Base64 etc. etc. –