Rumah pembangunan bahagian belakang tutorial php [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>
Salin selepas log masuk

在调用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>
Salin selepas log masuk

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana Nginx menggunakan perpustakaan OpenSSL untuk komunikasi yang lebih selamat Bagaimana Nginx menggunakan perpustakaan OpenSSL untuk komunikasi yang lebih selamat Jun 10, 2023 pm 01:51 PM

Nginx ialah perisian yang digunakan secara meluas dalam pelayan web, pengimbang beban, proksi terbalik dan cache. Semasa penghantaran rangkaian, penyulitan data dan keselamatan telah mendapat perhatian yang semakin meningkat. Untuk meningkatkan keselamatan komunikasi, perpustakaan OpenSSL boleh digunakan untuk melaksanakan protokol SSL/TLS untuk melindungi penghantaran data sensitif. Artikel ini akan menerangkan cara menggunakan Nginx dan perpustakaan OpenSSL untuk mencapai komunikasi yang lebih selamat. Pasang dan konfigurasikan pustaka OpenSSL Mula-mula, anda perlu memasang pustaka OpenSSL pada pelayan. boleh buat

Bagaimana untuk menjana sijil SSL MySQL menggunakan OpenSSL Bagaimana untuk menjana sijil SSL MySQL menggunakan OpenSSL Sep 09, 2023 pm 02:12 PM

Pengenalan kepada cara menggunakan OpenSSL untuk menjana sijil SSL MySQL: MySQL ialah sistem pangkalan data hubungan yang digunakan secara meluas Ia adalah sangat penting untuk menggunakan protokol SSL (SecureSocketsLayer) untuk komunikasi yang disulitkan dalam persekitaran pengeluaran sebenar. Artikel ini akan memperkenalkan cara menggunakan alat OpenSSL untuk menjana sijil SSL MySQL dan memberikan contoh kod yang sepadan. Langkah: Pasang OpenSSL: Pertama, pastikan anda telah memasang OpenSSL pada komputer anda

Kaedah dan tutorial pengaktifan manual HWID V 2.2 Kaedah dan tutorial pengaktifan manual HWID V 2.2 Oct 20, 2023 pm 07:17 PM

Ini adalah untuk pengguna yang ingin melakukan pengaktifan manual. Jika anda memerlukan bantuan dengan alat untuk anda melakukan ini, kemudian semak di sini. Kita boleh membahagikan proses pengaktifan manual kepada dua bahagian. 1- Daripada fail kumpulan siap sedia pastikan internet didayakan. Buka Windows Powershell sebagai pentadbir dan masukkan yang berikut untuk menyenaraikan arahan dalam susunan yang diberikan. Masukkan kekunci, (gantikan dengan kunci daripada senarai di atas) Gunakan arahan berikut &lt;key&gt;slmgr/ipk&lt;key&gt; Muat turun tiket universal dari sini dan ekstrak fail yang dimuat turun. Sekarang masukkan kod berikut dalam Powershell (Get-ItemProper

Pemasangan OpenBLAS di bawah pemasangan CentOS 7 dan CentOS 7 OpenSSL Pemasangan OpenBLAS di bawah pemasangan CentOS 7 dan CentOS 7 OpenSSL Feb 10, 2024 am 11:45 AM

Sebagai sistem pengendalian sumber terbuka, LINUX mempunyai pelbagai aplikasi dan kumpulan pengguna CentOS7 adalah versi cawangan LINUX Ia dibina berdasarkan kod sumber Red Hat Enterprise Linux (RHEL) dan mempunyai tahap kestabilan dan keselamatan yang tinggi . Ia boleh dipasang dan dikonfigurasikan pada CentOS7 OpenBLAS dan OpenSSL adalah keperluan biasa bagi banyak pembangun dan pentadbir sistem. OpenBLAS ialah perpustakaan matematik berprestasi tinggi sumber terbuka berdasarkan antara muka BLAS (BasicLinearAlgebraSubprograms).

Gunakan fungsi String.length() java untuk mendapatkan panjang rentetan Gunakan fungsi String.length() java untuk mendapatkan panjang rentetan Jul 25, 2023 am 09:09 AM

Gunakan fungsi String.length() Java untuk mendapatkan panjang rentetan Dalam pengaturcaraan Java, rentetan ialah jenis data yang sangat biasa Kita selalunya perlu mendapatkan panjang rentetan, iaitu bilangan aksara dalam rentetan. Di Java, kita boleh menggunakan fungsi length() kelas String untuk mendapatkan panjang rentetan. Berikut ialah kod contoh mudah: publicclassStringLengthExample{publ

Java menjana nombor titik terapung ketepatan berganda rawak menggunakan fungsi nextDouble() kelas Rawak Java menjana nombor titik terapung ketepatan berganda rawak menggunakan fungsi nextDouble() kelas Rawak Jul 25, 2023 am 09:06 AM

Java menggunakan fungsi nextDouble() kelas Rawak untuk menjana nombor titik terapung berketepatan ganda rawak Kelas Rawak dalam Java ialah penjana nombor rawak pseudo yang boleh digunakan untuk menjana pelbagai jenis nombor rawak. Antaranya, fungsi nextDouble() digunakan untuk menjana nombor titik terapung berketepatan dua kali rawak. Sebelum menggunakan kelas Random, kita perlu mengimport pakej java.util terlebih dahulu. Seterusnya kita boleh mencipta objek Rawak dan menggunakan fungsi nextDouble().

Bagaimana untuk menggunakan demo perpustakaan rawak python Bagaimana untuk menggunakan demo perpustakaan rawak python May 05, 2023 pm 08:13 PM

Penggunaan mudah demo perpustakaan pythonrandom Apabila kita perlu menjana nombor rawak atau memilih unsur secara rawak daripada jujukan, kita boleh menggunakan perpustakaan rawak terbina dalam Python. Berikut ialah contoh beranotasi yang menunjukkan cara menggunakan pustaka rawak: #Import perpustakaan rawak importrandom #Jana perpuluhan rawak antara 0 dan 1 random_float=random.random()print(random_float)#Jana perpuluhan rawak dalam julat yang ditentukan Rawak integer (termasuk titik akhir) random_int=random.randint(1,10)print(random_int)#

Bagaimana untuk menyelesaikan ralat 'undefined: bytes.Split' dalam golang? Bagaimana untuk menyelesaikan ralat 'undefined: bytes.Split' dalam golang? Jun 25, 2023 pm 02:02 PM

Dalam bahasa Go, pakej bait ialah pakej untuk memanipulasi jenis bait, dan ia mengandungi banyak kaedah berguna, seperti kaedah Split(). Walau bagaimanapun, apabila menggunakan kaedah Split(), anda mungkin menghadapi ralat "undefined: bytes.Split". Ralat ini biasanya disebabkan oleh versi Go yang tidak serasi atau kekurangan perpustakaan bergantung yang diperlukan. Artikel ini akan memperkenalkan beberapa kaedah untuk menyelesaikan ralat ini. Kaedah 1: Tingkatkan versi Go seperti berikut

See all articles