[PHP]利用openssl_random_pseudo_bytes跟base64_encode函数来生成随机字符串
[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>
在调用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>
这个函数的通用性很强,可以根据业务的需要进行适当修改然后当作静态方法进行调用。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Nginx是一款廣泛應用於Web伺服器、負載平衡器、反向代理程式和快取的軟體。在網路傳輸過程中,資料的加密和安全性越來越受到關注。為了提高通訊的安全性,可以使用OpenSSL函式庫來實現SSL/TLS協議,從而保護敏感資料的傳輸。本文將說明如何使用Nginx與OpenSSL函式庫實現更安全的通訊。安裝與設定OpenSSL函式庫首先,需要在伺服器上安裝OpenSSL函式庫。可以使

如何使用OpenSSL產生MySQLSSL憑證簡介:MySQL是一種廣泛應用的關係型資料庫系統,在實際生產環境中使用SSL(SecureSocketsLayer)協定進行加密通訊是非常重要的。本文將介紹如何使用OpenSSL工具產生MySQLSSL證書,並提供對應的程式碼範例。步驟:安裝OpenSSL:首先,確保電腦上已安裝O

這適用於想要執行手動啟動的用戶。如果需要協助,為您執行此操作的工具,然後檢查此處。我們可以將手動啟動過程分為兩部分。 1-從現成的批次檔確保已啟用網路。以管理員身分開啟WindowsPowershell,然後輸入以下內容以給予指令的順序列出指令。輸入金鑰,(替換為金鑰從上面的清單)使用以下指令<key>slmgr/ipk<key>從這裡下載通用票券並提取下載的檔案。現在在Powershell中輸入以下程式碼(Get-ItemProper

LINUX作為一個開源作業系統,有著廣泛的應用和使用者群體,CentOS7是LINUX的一個分支版本,它是基於RedHatEnterpriseLinux(RHEL)原始碼構建的,具有高度的穩定性和安全性,在CentOS7上安裝和配置OpenBLAS和OpenSSL是許多開發者和系統管理員的常見需求,本文將詳細介紹如何在CentOS7上安裝和設定OpenBLAS和OpenSSL。 OpenBLAS是一個開源的基於BLAS(BasicLinearAlgebraSubprograms)介面的高效能數學庫,

使用Java的String.length()函數取得字串的長度在Java程式設計中,字串是一種非常常見的資料類型,我們經常需要取得字串的長度,即字串中字元的個數。在Java中,我們可以使用String類別的length()函數來取得字串的長度。下面是一個簡單的範例程式碼:publicclassStringLengthExample{publ

Java使用Random類別的nextDouble()函數產生隨機的雙精確度浮點數Java中的Random類別是一個偽隨機數產生器,可以用來產生不同類型的隨機數。其中,nextDouble()函數用來產生一個隨機的雙精度浮點數。在使用Random類別之前,我們需要先導入java.util套件。接下來我們可以建立一個Random對象,然後使用nextDouble()函數

pythonrandom函式庫簡單使用demo當我們需要產生隨機數或從一個序列中隨機選擇元素時,可以使用Python內建的random函式庫。以下是一個有註解的例子,示範如何使用random函式庫:#導入random函式庫importrandom#產生一個0到1之間的隨機小數random_float=random.random()print(random_float)#產生一個指定範圍內的隨機整數(包括端點)random_int=random.randint(1,10)print(random_int)#

在Go語言中,bytes套件是一個用於操作位元組類型的套件,並且它包含了許多有用的方法,例如Split()方法。不過,在使用Split()方法時,你可能會遇到「undefined:bytes.Split」的錯誤。這種錯誤通常是由於Go版本不相容或缺少必要的依賴庫等原因引起的。這篇文章將介紹一些解決這種錯誤的方法。方法一:升級Go版本如
