php生成隨機密碼的三種方法

  使用PHP開發應用程式,尤其是網站程序,常常需要生成隨機密碼,如用戶註冊生成隨機密碼,用戶重置密碼也需要生成一個隨機的密碼。隨機密碼也就是一串固定長度的字符串,這裡我收集整理了幾種生成隨機字符串的方法,以供大家參考。

方法/步驟

、在 33 – 126 中生成一個隨機整數,如 35,

  2、將 35 轉換成對應的ASCII碼字符,如 35 對應 #

  3、重複以上 1、2 步驟 n 次,連接成 n 位的密碼

  該算法主要用到了兩個函數,mt_rand ( int $min , int $max )函數用於生成隨機整數,其中 $min – $max 為 ASCII 碼的範圍,這裡取 33 -126 ,可以根據需要調整範圍,如ASCII碼錶中 97 – 122 位對應 a – z 的英文字母,具體可參考 ASCII碼錶; chr ( int $ascii )函數用於將對應整數 $ascii 轉換成對應的字符。

  function create_password($pw_length = 8)

  {

  $randpwd = '';

  for ($i = 0; $i < $pw_length; $i++)

  {

  $randpwd .= chr(mt_rand(33, 126));

  }

  return $randpwd;

  }

  // 調用該函數,傳遞長度參數$pw_length = 6

  echo create_password(6);

  1、預置一個的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符

  2、在 $chars 字符串中隨機取一個字符

  3、重複第二步 n 次,可得長度為 n 的密碼

  function generate_password( $length = 8 ) {

  // 密碼字符集,可任意添加你需要的字符

  $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

  $password = '';

  for ( $i = 0; $i < $length; $i++ )

  {

  // 這裡提供兩種字符獲取方式

  // 第一種是使用 substr 截取$chars中的任意一位字符;

  // 第二種是取字符數組 $chars 的任意元素

  // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

  $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];

  }

  return $password;

  }

1、預置一個的字符數組 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符

2、通過array_rand()從數組 $chars 中隨機選出 $length 個元素

3、根據已獲取的鍵名數組 $keys,從數組 $chars 取出字符拼接字符串。該方法的缺點是相同的字符不會重複取。

function make_password( $length = 8 )
{
   // 密碼字符集,可任意添加你需要的字符
   $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
   'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',
   't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',
   'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',
   'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
   '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
   '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
   '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
   '.', ';', ':', '/', '?', '|');

// 在 $chars 中隨機取 $length 個數組元素鍵名
   $keys = ($chars, $length);

$password = '';
   for($i = 0; $i < $length; $i++)
   {
       // 將 $length 個數組元素連接成字符串
       $password .= $chars[$keys[$i]];
   }

return $password;
}

注意事項

時間效率對比

我們使用以下PHP代碼,計算上面的 3 個隨機密碼生成函數生成 6 位密碼的運行時間,進而對他們的時間效率進行一個簡單的對比。

<?php
function getmicrotime()
{
   list($usec, $sec) = explode(" ",microtime());
   return ((float)$usec + (float)$sec);
}

// 記錄開始時間
$time_start = getmicrotime();
   
// 這裡放要執行的PHP代碼,如:
// echo create_password(6);

// 記錄結束時間
$time_end = getmicrotime();
$time = $time_end - $time_start;

// 輸出運行總時間
echo "執行時間 $time seconds";
?>

最終得出的結果是:

方法一:9.8943710327148E-5 秒

方法二:9.6797943115234E-5 秒

方法三:0.00017499923706055 秒

可以看出方法一和方法二的執行時間都差不多,而方法三的運行時間稍微長了點。

相關文章

  1. 盤點PHP生成隨機密碼的三種方法

    PHP網站建設中經常用到的技術之一就是生產隨機密碼,我總結了一下有三種方法,但是三種方法利弊各有不同,要選擇哪一種方法?看你的取向是什麼?用在哪裡? php生成隨機密碼的方法一: 1.在 33 – 1 ...
  2. 詳細介紹Matlab中生成向量的三種方法

    在Matlab中,如何才能生成向量,生成向量的方法又有多少種?相信這是每一個初學者都想知道的問題.這裡小編將向大家詳細介紹Matlab中生成向量的三種方法,希望能給大家帶來幫助. 工具/原料 Matl ...
  3. Excel表格中自動生成序列號的三種方法

    在工作中,Excel是我們最常用的軟體之一,熟悉了Excel的使用,能讓我們在工作中事半功倍,下面小編以示例介紹在Excel表格中自動生成序列號的三種方法 工具/原料 Excel 方法/步驟 方法一: ...
  4. php生成隨機密碼的2種方法

    使用PHP開發應用程式,尤其是網站程序,常常需要生成隨機密碼,如用戶註冊生成隨機密碼,用戶重置密碼也需要生成一個隨機的密碼.隨機密碼也就是一串固定長度的字符串,這裡我收集整理了幾種生成隨機字符串的方法 ...
  5. 用php生成隨機密碼的3種方法及時間對比

    使用PHP開發應用程式,尤其是網站程序,常常需要生成隨機密碼,如用戶註冊生成隨機密碼,用戶重置密碼也需要生成一個隨機的密碼.隨機密碼也就是一串固定長度的字符串,這裡我收集整理了3種生成隨機字符串的方法 ...
  6. PHP生成靜態html文件的三種方法

    如何利用php生成靜態html文件?這是很學習php的朋友都會提到的問題,本文將為朋友們介紹三種利用php生成靜態html文件的方法: 靜態html好處 一.是不需要運行在伺服器上,訪問的時候,伺服器 ...
  7. 怎樣用三種方法生成文件夾列表

    有時我們需要記錄一個文件夾裡面的所有文件名,如果手動輸入肯定不堪重負.那麼有什麼可行之策能幫助我們呢.我總結了一下三種方法供大家借鑑.當然會有很多不足,希望能通過自己的進步逐步修改得到提高.寫真正有用 ...
  8. Mathematica 生成准對角矩陣的三種方法

    在使用Mathematica的時候,對角矩陣的生成是有內置函數的,但是准對角矩陣的生成則要自己動手. 作者總結了三條非常便捷的方法,只需要寥寥幾行代碼即可完成. 工具/原料 Mathematica 1 ...
  9. 清除書上污跡三種方法

    愛讀書的人有時候會不小心把書弄上一些污跡,如油.墨水.保存不當造成的潮跡等....下面我們就看看如何去除這些污跡. 工具/原料 吸水紙.明礬.草酸.檸檬酸 熨斗 方法/步驟 1.當書本弄上油跡時,在油 ...
  10. 選購紅木家具最簡單的三種方法

    近年來國人生活水平顯著提高,群眾視紅木家具及紅木工藝美術品為使用和收藏的精品,導致紅術製品的製作.銷售和購買高潮.問題是紅木的真偽難辨,消費者非常擔心購買的是假貨.為此,提出購買紅木家具的了解標準,並 ...
  11. QQ附近的人跳過回復添加好友的三種方法。

    QQ附近的人添加好友不打招呼的三種方法. 工具/原料 手機QQ 電腦QQ 方法/步驟 第一種 有的附近人開發了空間,點進去預覽下,在返回到自己QQ空間  "我看過誰" 就可以找到了 ...
  12. 茶葉保鮮的三種方法

    普通密封保鮮法 也是家庭保鮮.將買回的茶葉,立即分成若干小包,裝於事先準備好的茶葉罐或筒里,最好一次要裝滿蓋上蓋,在不用時不要打開,用完把蓋蓋嚴.有條件可在器皿筒內適當放些用布袋裝好的生石灰,以起到吸 ...
  13. Word三種方法輕鬆實現上下標對齊

    在撰寫行政和科技報告,特別是機械尺寸的偏差標誌的時候經常需要對輸入標誌實現上下標對齊.本文介紹三種方法輕鬆實現這一操作來提高大家的辦公效率. 方法/步驟 方法一.雙行合一法 1.新建一個文檔,輸入文本 ...
  14. 俠盜飛車5:GTAOL100%刷肌肉車不死鳥的三種方法

    看到很多朋友想刷不死鳥,本人查了很多資料親測幾種方法: 1:最快的方法: 先買一輛大腳怪,捨不得錢就去沙漠偷吧 開著大腳怪去最南端simon的港口,港口的幾個停車場必然能刷出一輛,一般臨街的大停車場就 ...
  15. 分享獲得行業人才網品牌優勢的三種方法

    行業人才網相對來說,是目前比較新穎的人才網類型,之前人才網大致被全國性的人才網,如智聯,中華英才網,易才網等等人才網門戶所把持著,而對於地方,甚至到了二三級小城市,也都有了人才網!而針對行業性質的人才 ...
  16. Word基本教程系列-Word中添加下劃線的三種方法

    在用word製作一些試卷時候,我們常常會用到"下劃線",輸入下劃線的輸入有兩種.,下面請看我是怎麼樣做到的,本人在這裡介紹Word中添加下劃線的三種方法 工具/原料 Word200 ...
  17. 怎樣申請QQ號—申請QQ號的三種方法

    QQ號幾乎家喻戶曉,面對一些剛會上網的新手,怎麼樣去申請QQ號?怎麼樣能申請一個好記的呢?接下來就做個示範怎麼去申請QQ號. 工具/原料 QQ號註冊網頁 方法/步驟-QQ帳號註冊 第一步就是打開QQ, ...
  18. 瘦臉的三種方法

    "美"是有流行趨勢的.近幾年鵝蛋臉的美人漸漸淡出人們視線,各種巴掌大的瓜子臉如雨後春筍般冒了出來.於是,美眉們見面便交流瘦臉心得.然而打著快速瘦臉旗號的方法眾多,真偽難辨.今天,小 ...
  19. 三種方法編輯Windows XP下的Boot.ini文件

    Windows XP主要依賴Boot.ini文件來確定計算機在重啟(引導)過程中顯示的可供選取的作業系統類別.Boot.ini在預設狀態下被設定為隱含和系統文件屬性,並且被標識為只讀文件. 方法1 右 ...
  20. 提高初中生記憶力的三種方法

    孩子的記憶力可能不佳時,家長往往大喊冤枉.並舉出孩子2歲時就會背唐詩或者幾天前去過的地方過目不忘.到底孩子的記憶力好還是不好?孩子的記憶力發展有沒有關鍵期?卓越教育老師為大家整理了相關資料,以供參考: ...