在 PHP 中生成密碼

Subodh Poudel 2023年1月30日 2021年7月8日
  1. 在 PHP 中使用 rand() 函式選擇隨機陣列索引以生成隨機密碼
  2. 在 PHP 中使用 openssl_random_pseudo_bytes()bin2hex() 函式生成隨機密碼
  3. 使用 substr()str_shuffle() 函式從 PHP 中的給定字母數字字串生成隨機密碼
在 PHP 中生成密碼

我們將介紹一種使用 rand() 函式在 PHP 中生成隨機密碼的方法。此方法使用大小寫字母和數字的組合來形成密碼。rand() 函式返回隨機整數,即陣列索引,以選擇密碼組合。

我們還將介紹另一種使用 openssl_random_pseudo_bytes()bin2hex() 函式在 PHP 中生成隨機密碼的方法。

本文將演示另一種使用 substr()str_shuffle() 函式在 PHP 中生成隨機密碼的方法。此方法還使用程式中提供的字母數字值來形成隨機密碼。

在 PHP 中使用 rand() 函式選擇隨機陣列索引以生成隨機密碼

我們可以使用 rand() 函式在 PHP 中生成一個隨機密碼。rand() 函式從提供的引數範圍中返回一個隨機整數。該函式採用兩個整數值作為引數。我們可以定義一個由字母和數字組成的字串,我們可以在其中組合密碼。隨機數索引陣列以選擇隨機字母或數字。我們可以迴圈 rand() 函式來建立所需長度的密碼。

例如,建立一個變數 $comb 並將包含所有小寫和大寫字母以及從 0 到 10 的數字的字串儲存為 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890。使用 array() 函式建立一個陣列 $pass。將字串 $comb 的長度儲存在 $combLen 變數中。建立一個 for 迴圈並迭代迴圈八次。在迴圈內部,使用 rand() 函式和 0$combLen 變數作為引數,並將值儲存在 $n 變數中。然後,將 $comb[$n] 分配給 $pass 陣列。在迴圈外,使用 implode() 函式將陣列轉換為字串。

在下面的示例中,我們從儲存在 $comb 變數中的組合生成一個隨機密碼。rand() 函式選取一個從 0 到字串 $comb 長度的隨機整數。隨機整數用作從組合中選取隨機字母數字值的索引。迴圈執行八次並選擇八個隨機字母數字值,最後形成一個隨機密碼。檢視 PHP 手冊 以瞭解有關 rand() 函式的更多資訊。

示例程式碼:

# php 7.x
<?php
 $comb = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
 $pass = array(); 
 $combLen = strlen($comb) - 1; 
 for ($i = 0; $i < 8; $i++) {
     $n = rand(0, $combLen);
     $pass[] = $comb[$n];
 }
 print(implode($pass)); 
?>

輸出:

aPsQWlzh

在 PHP 中使用 openssl_random_pseudo_bytes()bin2hex() 函式生成隨機密碼

我們可以使用 openssl_random_pseudo_bytes() 函式來生成一個偽隨機位元組串。我們可以指定一個整數值作為函式的引數來定義要生成的所需位元組數的長度。bin2hex() 函式將二進位制資料轉換為十六進位制表示。我們可以使用該函式將隨機生成的位元組串轉換為十六進位制表示形式並形成密碼。此方法生成由字母數字值組成的隨機密碼。

例如,建立一個變數 $bytes 併為其分配函式 openssl_random_pseudo_bytes()。指定 4 作為函式的引數。建立另一個變數 $pass,並將函式 bin2hex() 寫入其中。在函式中指定 $bytes 變數。使用 echo 語句列印 $pass 變數。

在下面的示例中,openssl_random_pseudo_bytes() 函式中的 4 表示要隨機生成的位元組數。bin2hex() 函式將位元組轉換為等效的十六進位制數。隨機生成的密碼長度為 8,因為 4 位元組字串的十六進位制轉換結果為 8。檢視 PHP 手冊 以瞭解有關 bin2hex() 函式的更多資訊。

示例程式碼:

#php 7.x
<?php
$bytes = openssl_random_pseudo_bytes(4);
$pass = bin2hex($bytes);
echo $pass;
?>

輸出:

ed203eef

使用 substr()str_shuffle() 函式從 PHP 中的給定字母數字字串生成隨機密碼

我們可以使用 str_shuffle() 方法隨機打亂給定的字串。該函式將小寫和大寫字母組合的字串以及從 0 到 9 的數字打亂。因此,它形成了所有可能情況的一種排列。我們可以使用 substr() 函式處理混洗後的字串以選擇其字元的一部分。因此,我們可以生成一個隨機密碼。

例如,建立一個變數 $comb 並在其中儲存字串值 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789。使用 str_shuffle()$comb 變數進行混洗並將其儲存在 $shfl 變數中。然後,使用 substr() 函式和 $shfl 變數、08 作為引數。將函式儲存在 $pwd 變數中並列印該變數。

在下面的示例中,我們使用與第一種方法相同的一組字母數字值。隨機生成的密碼由這些字母數字值組成。str_shuffle() 函式將字母數字值打亂並建立隨機排列。我們在 substr() 函式中使用了 08 來從無序排列的第一個索引中選擇八個字元。因此,它會生成一個八位數的隨機密碼。

程式碼示例:

#php 7.x
<?php
$comb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$shfl = str_shuffle($comb);
$pwd = substr($shfl,0,8);
echo $pwd;
?>

輸出:

jenZq3lY
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相關文章 - PHP Password