詳解php中的password_verify?和?password_hash密碼驗(yàn)證
password_hash() 使用足夠強(qiáng)度的單向散列算法創(chuàng)建密碼的散列(hash)。
當(dāng)前支持的算法:
PASSWORD_DEFAULT
- 使用 bcrypt 算法 (PHP 5.5.0 默認(rèn))。 注意,該常量會(huì)隨著 PHP 加入更新更高強(qiáng)度的算法而改變。 所以,使用此常量生成結(jié)果的長(zhǎng)度將在未來有變化。 因此,數(shù)據(jù)庫(kù)里儲(chǔ)存結(jié)果的列可超過60個(gè)字符(最好是255個(gè)字符)。PASSWORD_BCRYPT
- 使用CRYPT_BLOWFISH
算法創(chuàng)建散列。 這會(huì)產(chǎn)生兼容使用 "$2y$" 的 crypt()。 結(jié)果將會(huì)是 60 個(gè)字符的字符串, 或者在失敗時(shí)返回false
。PASSWORD_ARGON2I
- 使用 Argon2i 散列算法創(chuàng)建散列。 只有在 PHP 編譯時(shí)加入 Argon2 支持時(shí)才能使用該算法。PASSWORD_ARGON2ID
- 使用 Argon2id 散列算法創(chuàng)建散列。 只有在 PHP 編譯時(shí)加入 Argon2 支持時(shí)才能使用該算法。
PASSWORD_BCRYPT
支持的選項(xiàng):
salt
(string) - 手動(dòng)提供散列密碼的鹽值(salt)。這將避免自動(dòng)生成鹽值(salt)。
省略此值后,password_hash() 會(huì)為每個(gè)密碼散列自動(dòng)生成隨機(jī)的鹽值。這種操作是有意的模式。
警告
鹽值(salt)選項(xiàng)已廢棄(deprecated)。 現(xiàn)在最好僅選擇使用默認(rèn)產(chǎn)生的鹽值。 從 PHP 8.0.0 起,明確指定的 salt 值會(huì)被忽略。
cost
(int) - 代表算法使用的 cost。crypt() 頁面上有 cost 值的示例。
省略時(shí),默認(rèn)值是 10
。 這個(gè) cost 是個(gè)不錯(cuò)的底線,但也許可以根據(jù)自己硬件的情況,加大這個(gè)值。
PASSWORD_ARGON2I
和 PASSWORD_ARGON2ID
支持的選項(xiàng):
memory_cost
(int) - 計(jì)算 Argon2 散列時(shí)的最大內(nèi)存(單位:KB)。默認(rèn)值:PASSWORD_ARGON2_DEFAULT_MEMORY_COST
。time_cost
(int) - 計(jì)算 Argon2 散列時(shí)最多的時(shí)間。默認(rèn)值:PASSWORD_ARGON2_DEFAULT_TIME_COST
。threads
(int) - 計(jì)算 Argon2 散列時(shí)最多的線程數(shù)。默認(rèn)值:PASSWORD_ARGON2_DEFAULT_THREADS
。
加密:
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT)
驗(yàn)證:
<?php // 想知道以下字符從哪里來,可參見 password_hash() 示例 $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; } ?>
到此這篇關(guān)于php的password_verify 和 password_hash密碼驗(yàn)證的文章就介紹到這了,更多相關(guān)php密碼驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tp5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器功能
這最近在做一個(gè)教育類的小商城的微信小程序,用到了上傳多個(gè)圖片文件到服務(wù)器端。下面腳本之家小編給大家?guī)砹藅p5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器的方法,需要的朋友可以參考下2018-07-07thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法
這篇文章主要介紹了thinkphp3.2實(shí)現(xiàn)跨控制器調(diào)用其他模塊的方法,結(jié)合實(shí)例形式分析了thinkPHP跨模塊、跨控制器調(diào)用方法的常見操作技巧,需要的朋友可以參考下2017-03-03Laravel5.1 框架關(guān)聯(lián)模型之后操作實(shí)例分析
這篇文章主要介紹了Laravel5.1 框架關(guān)聯(lián)模型之后操作,結(jié)合實(shí)例形式分析了laravel5.1框架寫入關(guān)聯(lián)模型、更新關(guān)聯(lián)關(guān)系等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-01-01laravel中Join語法以及使用Join多個(gè)條件
這篇文章主要介紹了laravel中Join語法以及使用Join多個(gè)條件,文中不僅介紹了join用法而且講述了多種方法很詳細(xì),有感興趣的同學(xué)可以學(xué)習(xí)下2021-03-03一個(gè)簡(jiǎn)單的網(wǎng)頁密碼登陸php代碼
密碼對(duì),就可以看到指定內(nèi)容, 密碼不對(duì)就進(jìn)不去2012-07-07