php生成用戶密碼的兩種方式_第1頁
php生成用戶密碼的兩種方式_第2頁
php生成用戶密碼的兩種方式_第3頁
php生成用戶密碼的兩種方式_第4頁
php生成用戶密碼的兩種方式_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第php生成用戶密碼的兩種方式方法四:

在用戶系統(tǒng)中,生成用戶的密碼是很重要的,而簡單的密碼必然給一些不法用戶開了一些門戶,這里列出幾種常見的密碼生成方式

一、md5密碼

這種應(yīng)該算是最常見的密碼加密方式了

md5是屬于非對稱加密中的一種,這種密碼方式其實(shí)說安全也很安全,而因?yàn)楣E鲎驳拇嬖?,會?dǎo)致可能會出現(xiàn)漏洞

最好是在加密的時候,加入混淆字符串,如下所示

functionmd5_password($password,$hash='autofelix_')

returnmd5($hash.$password);

$userinfo=/**查詢用戶信息**/;

if($userinfo['password']!==md5_password($password)){

/**密碼錯誤邏輯**/

/**密碼正確,繼續(xù)往后走邏輯**/

二、hash密碼

這種加密方式主要使用單向散列算法創(chuàng)建密碼的散列

PASSWORD_DEFAULT使用bcrypt算法

PASSWORD_BCRYPT使用CRYPT_BLOWFISH算法創(chuàng)建散列

PASSWORD_ARGON2I使用Argon2散列算法創(chuàng)建散列

這種密碼加密方式數(shù)據(jù)庫里儲存結(jié)果的列可超過60個字符,所以varchar長度請?jiān)O(shè)置255

functiongeneratePassword($password)

returnpassword_hash($password,PASSWORD_DEFAULT);

functionverifyPassword($password,$hashPassword)

returnpassword_verify($password,$hashPassword);

//加密結(jié)果:$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

PS:php生成隨機(jī)密碼的幾種方法

方法一:

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

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

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

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

functioncreate_password($pw_length=8){

$randpwd='';

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

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

return$randpwd;

//調(diào)用該函數(shù),傳遞長度參數(shù)$pw_length=6

echocreate_password(6);

方法二:

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

2、在$chars字符串中隨機(jī)取一個字符

3、重復(fù)第二步n次,可得長度為n的密碼

functiongenerate_password($length=8){

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

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

$password='';

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

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

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

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

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

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

return$password;

方法三:

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

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

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

functionmake_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中隨機(jī)取$length個數(shù)組元素鍵名

$keys=array_rand($chars,$length);

$password='';

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

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

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

return$password;

方法四:

本方法是本文被藍(lán)色理想轉(zhuǎn)載后,一名網(wǎng)友提供的一個新方法,算法簡單,代碼簡短,只是因?yàn)閙d5()函數(shù)的返回值的緣故,生成的密碼只包括字母和數(shù)字,不過也算是一個不錯的方法。算法思想:

1、time()獲取當(dāng)前的

溫馨提示

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

最新文檔

評論

0/150

提交評論