Diese Verschlüsselungserweiterung wurde in PHP7 integriert und erfordert keine spezielle Installation. Wenn es sich um eine Version unter PHP7 handelt, müssen Sie die Erweiterung unabhängig installieren. Sollten Sie beim Testen die unten beschriebenen Funktionen nicht finden, prüfen Sie bitte Ihre aktuelle PHP-Version.
Pseudozufällige Zeichengenerierung
var_dump(bin2hex(random_bytes(5))); // string(10) "f28dc2bdd5" var_dump(random_bytes(5)); // string(5) "�"��"
random_bytes() Jeder Aufruf generiert eine Binärzeichenfolge mit unterschiedlichem Inhalt, und der Parameter ist die binäre Bytelänge. Die direkt erhaltenen Binärdaten liegen im verstümmelten Format vor. Daher müssen wir im Allgemeinen bin2hex () verwenden, um die Binärdaten in eine für uns verständliche Zeichenfolge im Hexadezimalformat umzuwandeln. Das Ergebnis ist jedoch, dass die hexadezimale Zeichenlänge nach unserer Konvertierung doppelt so groß ist wie die von uns festgelegte Zeichenlänge. Die Funktion dieser Funktion kann für uns einen sicheren Benutzerpasswort-Salt, ein Schlüsselschlüsselwort oder einen Initialisierungsvektor generieren.
random_bytes() generiert bei jedem Aufruf eine Zeichenfolge mit einem anderen Inhalt, und der Parameter ist ein zufälliges Zeichen mit einer Zeichenlänge. Hier übergeben wir 5 und geben 10 Zeichen zurück. Es ist ersichtlich, dass dieser Parameter die Anzahl der Zeichen ist , und Was zurückgegeben wird, ist tatsächlich die Anzahl der Bytes, entsprechend der Rückgabeform, in der ein Zeichen zwei Bytes belegt. Oder wir können uns einfach daran erinnern, dass es doppelt so viele Parameter zurückgibt. Was die Rolle dieser Funktion betrifft, kann sie für uns einen sicheren Benutzerpasswort-Salt, ein Schlüsselschlüsselwort oder einen Initialisierungsvektor generieren.
Pseudo-zufällige Ganzzahlgenerierung
var_dump(random_int(100, 999)); var_dump(random_int(-1000, 0)); // int(900) // int(-791)
Für die Generierung von Ganzzahlen ist es noch einfacher, zwei Parameter für die Funktion random_int() anzugeben, die den Bereich der zufälligen Ganzzahlen darstellen. Tatsächlich wird es genauso verwendet wie mt_rand().
Generierungsquelle
Die Generierungsquellen der beiden oben genannten kryptografischen Pseudozufallsfunktionen hängen wie folgt vom Betriebssystem ab:
In Windows-Systemen wird die Funktion CryptGenRandom() verwendet. CNG-API wird ab 7.2.0 verwendet
In Linux-Systemen wird der Linux-Systemaufruf getrandom(2) verwendet
In anderen Systemen wird /dev/urandom verwendet
Ansonsten ein Es wird eine Ausnahme ausgelöst
Ausnahmen
Diese beiden Funktionen haben auch entsprechende Ausnahmen, die beispielsweise auftreten, wenn die Generierungsquelle oben nicht gefunden werden kann. Darüber hinaus wird natürlich eine Ausnahme ausgelöst Es kann auch andere Faktoren geben, die zu Ausnahmen führen.
Eine Ausnahme wird ausgelöst, wenn keine geeignete Zufallsquelle gefunden wird.
TypeError wird ausgelöst, wenn das angegebene Argument ungültig ist.
Es wird ein Fehler ausgelöst, wenn die angegebene Bytelänge ungültig ist
Der heutige Inhalt ist sehr einfach und ich habe auch die Nützlichkeit der Funktion random_bytes() entdeckt. In Zukunft muss ich nicht mehr selbst eine Funktion schreiben, um zufällig Salt zu generieren, genau wie der Artikel über das Salzen von Passwörtern zwischen uns. „Salt“-Passwörter? Wie können Sie Ihre Benutzerpasswörter sicher „salzen“? Die Funktion zur zufälligen Zeichengenerierung (generateSalt) kann grundsätzlich dadurch ersetzt werden. Haben Sie nicht das Gefühl, dass Sie viel gelernt haben? Lassen Sie uns gemeinsam weitere interessante Inhalte erkunden! !
Testcode:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84%E5%8A%A0%E5%AF%86%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8.php
Empfohlenes Lernen:
php-Video-Tutorial