Heim Backend-Entwicklung PHP-Tutorial [PHP]利用openssl_random_pseudo_bytes跟base64_encode函数来生成随机字符串

[PHP]利用openssl_random_pseudo_bytes跟base64_encode函数来生成随机字符串

Jun 13, 2016 pm 12:17 PM
bytes length openssl random

[PHP]利用openssl_random_pseudo_bytes和base64_encode函数来生成随机字符串

openssl_random_pseudo_bytes函数本身是用来生成指定个数的随机字节,因此在使用它来生成随机字符串时,还需要配合使用函数base64_encode。如下所示:

<code class="php hljs "><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getRandomString</span><span class="hljs-params">(<span class="hljs-variable">$length</span> = <span class="hljs-number">42</span>)</span>    {</span>        <span class="hljs-comment">/*         * Use OpenSSL (if available)         */</span>        <span class="hljs-keyword">if</span> (function_exists(<span class="hljs-string">'openssl_random_pseudo_bytes'</span>)) {            <span class="hljs-variable">$bytes</span> = openssl_random_pseudo_bytes(<span class="hljs-variable">$length</span> * <span class="hljs-number">2</span>);            <span class="hljs-keyword">if</span> (<span class="hljs-variable">$bytes</span> === <span class="hljs-keyword">false</span>)                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> RuntimeException(<span class="hljs-string">'Unable to generate a random string'</span>);            <span class="hljs-keyword">return</span> substr(str_replace([<span class="hljs-string">'/'</span>, <span class="hljs-string">'+'</span>, <span class="hljs-string">'='</span>], <span class="hljs-string">''</span>, base64_encode(<span class="hljs-variable">$bytes</span>)), <span class="hljs-number">0</span>, <span class="hljs-variable">$length</span>);        }        <span class="hljs-variable">$pool</span> = <span class="hljs-string">'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>;        <span class="hljs-keyword">return</span> substr(str_shuffle(str_repeat(<span class="hljs-variable">$pool</span>, <span class="hljs-number">5</span>)), <span class="hljs-number">0</span>, <span class="hljs-variable">$length</span>);    }</code>
Nach dem Login kopieren

在调用base64_encode函数之后,还对结果进行了一次替换操作,目的是要去除随机生成的字符串中不需要的字符。

当然,在使用openssl_random_pseudo_bytes函数之前,最好使用function_exists来确保该函数在运行时是可用的。如果不可用,则使用Plan B:

<code class="php hljs ">substr(str_shuffle(str_repeat(<span class="hljs-variable">$pool</span>, <span class="hljs-number">5</span>)), <span class="hljs-number">0</span>, <span class="hljs-variable">$length</span>);</code>
Nach dem Login kopieren

这个函数的通用性很强,可以根据业务的需要进行适当修改然后当作静态方法进行调用。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie Nginx die OpenSSL-Bibliothek für eine sicherere Kommunikation nutzt Wie Nginx die OpenSSL-Bibliothek für eine sicherere Kommunikation nutzt Jun 10, 2023 pm 01:51 PM

Nginx ist eine Software, die häufig in Webservern, Load Balancern, Reverse-Proxys und Caches verwendet wird. Bei der Netzwerkübertragung wird zunehmend auf Datenverschlüsselung und -sicherheit geachtet. Um die Sicherheit der Kommunikation zu verbessern, kann die OpenSSL-Bibliothek zur Implementierung des SSL/TLS-Protokolls zum Schutz der Übertragung sensibler Daten genutzt werden. In diesem Artikel wird erläutert, wie Sie mit Nginx und der OpenSSL-Bibliothek eine sicherere Kommunikation erreichen. Installieren und konfigurieren Sie die OpenSSL-Bibliothek. Zuerst müssen Sie die OpenSSL-Bibliothek auf dem Server installieren. machen kann

So generieren Sie ein MySQL-SSL-Zertifikat mit OpenSSL So generieren Sie ein MySQL-SSL-Zertifikat mit OpenSSL Sep 09, 2023 pm 02:12 PM

Einführung in die Verwendung von OpenSSL zum Generieren eines MySQL-SSL-Zertifikats: MySQL ist ein weit verbreitetes relationales Datenbanksystem. Es ist sehr wichtig, das SSL-Protokoll (SecureSocketsLayer) für die verschlüsselte Kommunikation in tatsächlichen Produktionsumgebungen zu verwenden. In diesem Artikel wird die Verwendung des OpenSSL-Tools zum Generieren eines MySQL-SSL-Zertifikats vorgestellt und entsprechende Codebeispiele bereitgestellt. Schritte: OpenSSL installieren: Stellen Sie zunächst sicher, dass OpenSSL auf Ihrem Computer installiert ist

Manuelle Aktivierungsmethoden und Tutorials für HWID V 2.2 Manuelle Aktivierungsmethoden und Tutorials für HWID V 2.2 Oct 20, 2023 pm 07:17 PM

Dies ist für Benutzer gedacht, die eine manuelle Aktivierung durchführen möchten. Wenn Sie hierfür Hilfe bei einem Tool benötigen, schauen Sie hier nach. Wir können den manuellen Aktivierungsprozess in zwei Teile unterteilen. 1- Stellen Sie anhand der vorgefertigten Batchdatei sicher, dass das Internet aktiviert ist. Öffnen Sie Windows Powershell als Administrator und geben Sie Folgendes ein, um die Befehle in der angegebenen Reihenfolge aufzulisten. Geben Sie den Schlüssel ein (ersetzen Sie ihn durch den Schlüssel aus der Liste oben). Verwenden Sie den folgenden Befehl: &lt;key&gt;slmgr/ipk&lt;key&gt; Laden Sie das Universalticket hier herunter und extrahieren Sie die heruntergeladene Datei. Geben Sie nun den folgenden Code in Powershell ein (Get-ItemProper

OpenBLAS-Installation unter CentOS 7 und CentOS 7 OpenSSL-Installation OpenBLAS-Installation unter CentOS 7 und CentOS 7 OpenSSL-Installation Feb 10, 2024 am 11:45 AM

Als Open-Source-Betriebssystem verfügt LINUX über ein breites Spektrum an Anwendungen und Benutzergruppen. Es basiert auf dem Quellcode von Red Hat Enterprise Linux (RHEL) und weist ein hohes Maß an Stabilität und Sicherheit auf Es kann auf CentOS7 installiert und konfiguriert werden. OpenBLAS und OpenSSL sind häufige Anforderungen vieler Entwickler und Systemadministratoren. In diesem Artikel wird detailliert beschrieben, wie OpenBLAS und OpenSSL auf CentOS7 installiert und konfiguriert werden. OpenBLAS ist eine Open-Source-Hochleistungs-Mathematikbibliothek, die auf der BLAS-Schnittstelle (BasicLinearAlgebraSubprograms) basiert.

Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln Jul 25, 2023 am 09:09 AM

Verwenden Sie die String.length()-Funktion von Java, um die Länge einer Zeichenfolge zu ermitteln. In der Java-Programmierung ist die Zeichenfolge ein sehr häufiger Datentyp. Wir müssen häufig die Länge einer Zeichenfolge ermitteln, dh die Anzahl der Zeichen in der Zeichenfolge. In Java können wir die Funktion length() der String-Klasse verwenden, um die Länge eines Strings zu ermitteln. Hier ist ein einfacher Beispielcode: publicclassStringLengthExample{publ

Java generiert zufällige Gleitkommazahlen mit doppelter Genauigkeit mithilfe der Funktion nextDouble() der Klasse Random Java generiert zufällige Gleitkommazahlen mit doppelter Genauigkeit mithilfe der Funktion nextDouble() der Klasse Random Jul 25, 2023 am 09:06 AM

Java verwendet die nextDouble()-Funktion der Random-Klasse, um zufällige Gleitkommazahlen mit doppelter Genauigkeit zu generieren. Die Random-Klasse in Java ist ein Pseudozufallszahlengenerator, der zum Generieren verschiedener Arten von Zufallszahlen verwendet werden kann. Unter anderem wird die Funktion nextDouble() verwendet, um eine zufällige Gleitkommazahl mit doppelter Genauigkeit zu generieren. Bevor wir die Random-Klasse verwenden, müssen wir das Paket java.util importieren. Als nächstes können wir ein Random-Objekt erstellen und dann die Funktion nextDouble() verwenden

So verwenden Sie die Demo der Python-Zufallsbibliothek So verwenden Sie die Demo der Python-Zufallsbibliothek May 05, 2023 pm 08:13 PM

Einfache Verwendung der Python-Random-Bibliotheksdemo Wenn wir Zufallszahlen generieren oder zufällig Elemente aus einer Sequenz auswählen müssen, können wir die in Python integrierte Zufallsbibliothek verwenden. Das Folgende ist ein kommentiertes Beispiel, das zeigt, wie die Zufallsbibliothek verwendet wird: #Zufallsbibliothek importieren importrandom #Eine zufällige Dezimalzahl zwischen 0 und 1 generieren random_float=random.random()print(random_float)#Eine zufällige Dezimalzahl innerhalb des angegebenen Bereichs generieren Zufällig Ganzzahl (einschließlich Endpunkte) random_int=random.randint(1,10)print(random_int)#

Wie behebe ich den Fehler „undefiniert: bytes.Split' in Golang? Wie behebe ich den Fehler „undefiniert: bytes.Split' in Golang? Jun 25, 2023 pm 02:02 PM

In der Go-Sprache ist das Byte-Paket ein Paket zum Bearbeiten von Byte-Typen und enthält viele nützliche Methoden, wie z. B. die Split()-Methode. Bei Verwendung der Split()-Methode kann jedoch der Fehler „undefiniert: bytes.Split“ auftreten. Dieser Fehler wird normalerweise durch inkompatible Go-Versionen oder das Fehlen notwendiger abhängiger Bibliotheken verursacht. In diesem Artikel werden einige Methoden zur Behebung dieses Fehlers vorgestellt. Methode 1: Aktualisieren Sie die Go-Version wie folgt

See all articles