php生成隨機密碼的4種方法_第1頁
php生成隨機密碼的4種方法_第2頁
php生成隨機密碼的4種方法_第3頁
php生成隨機密碼的4種方法_第4頁
php生成隨機密碼的4種方法_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——php生成隨機密碼的4種方法php生成隨機密碼的4種方法

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

方法一:

1、在33–126中生成一個隨機整數(shù),如35,

2、將35轉(zhuǎn)換成對應的ASCII碼字符,如35對應#

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

該算法主要用到了兩個函數(shù),mt_randint$min,int$max函數(shù)用于生成隨機整數(shù),其中$min–$max為ASCII碼的范圍,這里取33-126,可以根據(jù)需要調(diào)整范圍,如ASCII碼表中97–122位對應a–z的英文字母,概括可參考ASCII碼表;chrint$ascii函數(shù)用于將對應整數(shù)$ascii轉(zhuǎn)換成對應的字符。

functioncreate_password$pw_length=8$randpwd=;for$i=0;$i$pw_length;$i++$randpwd.=chrmt_rand33,126;return$randpwd;//調(diào)用該函數(shù),傳遞長度參數(shù)$pw_length=6echocreate_password6;

方法二:

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

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

3、重復其次步n次,可得長度為n的密碼

functiongenerate_password$length=8//密碼字符集,可任意添加你需要的字符$chars=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^*-_[]~`+=,.;:/?|;$password=;for$i=0;$i$length;$i++//這里供給兩種字符獲取方式//第一種是使用substr截取$chars中的任意一位字符;//其次種是取字符數(shù)組$chars的任意元素//$password.=substr$chars,mt_rand0,strlen$chars-1,1;$password.=$chars[mt_rand0,strlen$chars-1];return$password;

方法三:

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

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

3、根據(jù)已獲取的鍵名數(shù)組$keys,從數(shù)組$chars取出字符拼接字符串。該方法的缺點是一致的字符不會重復取。

functionmake_password$length=8

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

$chars=arraya,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個數(shù)組元素鍵名

$keys=array_rand$chars,$length;

$password=;

for$i=0;$i$length;$i++

//將$length個數(shù)組元素連接成字符串

$password.=$chars[$keys[$i]];

return$password;

方法四:

本方法是本文被藍色夢想轉(zhuǎn)載后,一名網(wǎng)友供給的一個新方法,算法簡樸,代碼簡短,只是由于md5函數(shù)的返回值的起因,生成的密碼只包括字母和數(shù)字,不過也算是一個不錯的方法。算法思想:

1、time獲取當前的Unix時間戳

2、將第一步獲取的時間戳舉行md5加密

3、將其次步加密的結(jié)果,截取n位即得想要的密碼

functionget_password$length=8$str=substrmd5time,0,6;return$str;

時間效率比較

我們使用以下PHP代碼,計算上面的.4個隨機密碼生成函數(shù)生成6位密碼的運行時間,進而對他們的時間效率舉行一個簡樸的比較。

functiongetmicrotime

list$usec,$sec=explode,microtime;

returnfloat$usec+float$sec;

//記錄開頭時間

$time_start=getmicrotime;

//這里放要執(zhí)行的PHP代碼,如:

//echocreate_password6;

//記錄終止時間

$time_end=getmicrotime;

$time=$time_end-$time_start;

//輸出運行總時間

echo執(zhí)行時間$timeseconds;

?

最終得出的結(jié)果是:

方法一:9.8943710327148E-5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論