這篇文章主要介紹了php數據加密技術與密鑰安全管理的方法的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇php數據加密技術與密鑰安全管理的方法文章都會有所收獲,下面我們一起來看看吧。
單向散列加密
單向散列加密就是把任意長的輸入消息串變化成固定長的輸出串且由輸出串難以得到輸入串的一種加密算法。
常見單向散列函數:
MD5 (Message Digest Algorithm 5)
SHA (Secure Hash Algorithm)
MAC (Message Authentication Code)
CRC (Cyclic Redundancy Check)
利用單項散列加密的這個特性,可以進行密碼加密保存。
PHP 處理密碼的幾種方式
MD5(不推薦)
$password = md5($_POST["password"]);
原因:加密算法比較簡單,而且很多破解密碼的站點都存放了大量的經過MD5加密的密碼字符串。
SHA256 和 SHA512(不推薦)
$password = hash("sha256", $password);
原因:加密算法比較簡單。
鹽值(額外字符串)(常用)
<?php $strSalt = '2f9c8d7h7g7f8d9k'; echo hash("sha256", $password . $strSalt);
解釋:在加密的過程中,新增了一個字符串。
Bcrypt (比較安全)
$strSalt = '2f9c8d7h7g7f8d9k'; $salt = '$2y$11$' . $strSalt; echo crypt($password, $salt);
解釋:salt 參數是可選的。然而,如果沒有salt的話,crypt()創建出來的會是弱密碼。
password_hash (安全)
//支持版本 (PHP 5 >= 5.5.0, PHP 7) echo password_hash($password, PASSWORD_DEFAULT);
解釋:password_hash() 使用足夠強度的單向散列算法創建密碼的哈希(hash)。
PHP端驗證密碼是否正確?
$password = 'e4r3t2y1u'; $strPwdHash = password_hash($password, PASSWORD_DEFAULT); if (password_verify($password, $strPwdHash)) { //驗證成功 } else { //驗證失敗 }
對稱加密
采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
優點:對稱加密算法的優點是算法公開、計算量小、加密速度快、加密效率高。
缺點:在數據傳送前,發送方和接收方必須商定好秘鑰,雙方必須保存好秘鑰。
常用算法:
DES
AES
PHP 相關類庫,網上都能找到。
非對稱加密
非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
請查看歷史文章:PHP 使用非對稱加密算法 (RSA)
密鑰安全管理
上面說到的這幾種加密技術,能夠達到安全保密效果的一種重要前提就是密鑰的安全。
在實際工作中,我們有開發環境,預發布環境,正式環境,每個環境中的密鑰都不相同。
那么,我們應該如何保存密鑰呢?
寫在源碼中(不可?。?。
寫在配置文件中。(大部分這樣干)。
寫在環境變量中。(大部分這樣干)。
保存在一個系統中,每次加密、解密都調取服務系統(系統開銷大)。
自己寫一個擴展,用PHP調取自己的擴展(維護成本高)。
關于“php數據加密技術與密鑰安全管理的方法”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“php數據加密技術與密鑰安全管理的方法”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。