最安全的 PHP 密碼加密方法

前言:

在PHP開發過程中,很多人PHP密碼加密都是用的md5和sha1(包括sha256.......),但不知道,隨著技術進步和計算機硬件的提升(集群、分布式、雲計算),破解者可以快速使用“暴力”(彩虹表)方式來尋找密碼加密後散列碼所對應的原始數據。

最安全的PHP密碼加密方法:

PHP官方自帶的密碼哈希函數 password_hash()
常用的MD5、SHA1、SHA256哈希算法,是麵向快速、高效進行哈希處理而設計的。隨著技術進步和計算機硬件的提升,如今強大的計算機很容易破解這種算法。也就是說,不要用MD5、SHA1、SHA256這種哈希方法加密密碼了,不太安全。

還好,PHP內置了密碼哈希函數password_hash,使用這個方法,PHP會升級底層的算法,達到如今的安全標準水平。

注意:PHP 5.5 之後引入 Password hashing API 用於創建和校驗哈希密碼,它屬於內核自帶,無需進行任何擴展安裝和配置。

函數具體怎麽用?我就不多說了,請大家自行查手冊,我簡單給大家解釋一下:為什麽建議大家用password_hash()函數?
1、password_hash()會隨機生成“鹽” 。

2、password_hash()加密後的值包括了“隨機鹽”+“密碼散列“組合的值。當然生成這個值是通過了一定算法的,不要問為什麽?

3、數據庫隻需要一個字段就可以存取“隨機鹽”+“密碼散列“值。我以前開發項目,為了保證不同用戶用不同的鹽,我數據庫還用了兩個字段,一個存密碼散列值,另一個存鹽的值。

4、密碼驗證簡單,隻需要用password_verify()函數驗證即可!
第一步:password_hash() 加密

用法示例:(推薦)

<?php
/**
 * 我們想要使用默認算法散列密碼
 * 當前是 BCRYPT 算法,並會產生 60 個字符的結果。
 * 據說bcrypt算法永不過時。
 *
 * 請注意,隨時間推移,默認算法可能會有變化,
 * 所以需要儲存的空間能夠超過 60 字(255字不錯)
 */
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
?>

以上例程的輸出類似於:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

第二步:加密後的散列值存數據庫。

這樣我們可以直接把上麵加密後的值存入數據庫,隻需要一個字段。

第三步:password_verify() 驗證密碼是否和散列值匹配?

用法示例:

<?php
// 想知道以下字符從哪裏來,可參見 password_hash() 的例子
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo '密碼正確';
} else {
    echo '密碼錯誤';
}
?>

更多相關密碼散列算法函數:

password_algos — 獲取可用的密碼哈希算法ID

password_get_info — 返回指定散列(hash)的相關信息

password_hash — 創建密碼的散列(hash)

password_needs_rehash — 檢測散列值是否匹配指定的選項

password_verify — 驗證密碼是否和散列值匹配

請參考PHP官方手冊:https://www.php.net/manual/zh/ref.password.php

總結:

可能很多人不知道,password_hash() 這個函數,它的前身其實就是phpass,phpass是一個開源類庫,它可以讓我們更方便使用bcrypt加密算法。

phpass網址:http://www.openwall.com/phpass/

相關說明:

1、VIP會員無限製任意下載,免積分。立即前往開通>>

2、下載積分可通過日常 簽到綁定郵箱 以及 積分兌換 等途徑獲得!

3、本站資源大多存儲在雲盤,如出現鏈接失效請評論反饋,如有密碼,均為:www.ipipn.com。

4、所有站內資源僅供學習交流使用。未經原版權作者許可,禁止用於任何商業環境,否則後果自負。為尊重作者版權,請購買正版作品。

5、站內資源來源於網絡公開發表文件或網友分享,如侵犯您的權益,請聯係管理員處理。

6、本站提供的源碼、模板、軟件工具等其他資源,都不包含技術服務,請大家諒解!

7、源碼、模板等資源會隨著技術、壞境的升級而存在部分問題,還請慎重選擇。

PS.源碼均收集自網絡,如有侵犯閣下權益,請發信件至: admin@ipipn.com .


源站網 » 最安全的 PHP 密碼加密方法

發表評論

讚助本站發展 維持服務器消耗

全站源碼免費下載 立刻讚助