password_hash
目前成都創新互聯已為上千多家的企業提供了網站建設、域名、虛擬空間、網站托管、服務器托管、企業網站設計、東興網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
傳統的用戶名和密碼都采用加鹽的方式存儲加密信息,鹽值也需要存儲。
自PHP5.5.0之后,新增加了密碼散列算法函數(password_hash),password_hash() 使用足夠強度的單向散列算法創建密碼的散列(hash)。 password_hash() 兼容 crypt()。 所以, crypt() 創建的密碼散列也可用于 password_hash()。
說明
password_hash不需要再單獨存儲鹽值,而且每次加密的值都不一樣,我們只需要存儲加密字符串,驗證時用password_verify()方法即可得出結果!
當前支持的算法:
PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默認)。 注意,該常量會隨著 PHP 加入更新更高強度的算法而改變。 所以,使用此常量生成結果的長度將在未來有變化。 因此,數據庫里儲存結果的列可超過60個字符(最好是255個字符)。
PASSWORD_BCRYPT - 使用 CRYPT_BLOWFISH 算法創建散列。 這會產生兼容使用 "$2y$" 的 crypt()。 結果將會是 60 個字符的字符串, 或者在失敗時返回 FALSE。
PASSWORD_ARGON2I - 使用 Argon2 散列算法創建散列。
返回值:
返回散列后的密碼, 或者在失敗時返回 FALSE。
使用的算法、cost 和鹽值作為散列的一部分返回。所以驗證散列值的所有信息都已經包含在內。 這使 password_verify() 函數驗證的時候,不需要額外儲存鹽值或者算法的信息。
/** * 我們想要使用默認算法散列密碼 * 當前是 BCRYPT,并會產生 60 個字符的結果。 * * 請注意,隨時間推移,默認算法可能會有變化, * 所以需要儲存的空間能夠超過 60 字(255字不錯) */ password_hash("rasmuslerdorf", PASSWORD_DEFAULT); 輸出類似結果: $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
驗證
$inputValue = '123456'; //用戶輸入的密碼 if(password_verify( $inputValue, '數據庫存儲的密碼')){ //如果為真,則驗證成功 } 輸出: True 或 False
以上就是詳解PHP中password_hash的功能的詳細內容,更多請關注創新互聯其它相關文章!
當前文章:PHP的password_hash功能介紹
當前URL:http://m.newbst.com/article24/ppiece.html
成都網站建設公司_創新互聯,為您提供網站設計公司、ChatGPT、移動網站建設、企業建站、網站營銷、外貿建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯