雙向加密:儲存可擷取的密碼
簡介
安全密碼允許使用者檢索它們構成了挑戰。對稱加密可以滿足這種需求,但理解實現的細微差別至關重要。
PHP 中的加密和解密
要在 PHP 中加密和解密密碼,請考慮使用mcrypt 或 OpenSSL 函式庫。以下是使用 mcrypt 的範例:
function encrypt($password, $key) { $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); } function decrypt($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); }
最安全的演算法
最佳加密演算法取決於特定的用例。對於儲存密碼,CBC 或 CTR 模式下的 AES-256 (Rijndael) 通常被認為是可靠的。
私鑰儲存
安全地儲存私鑰至關重要。一種建議的方法是使用使用者密碼和伺服器端鹽的組合。在PHP 中,可以使用以下方法實現:
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $key = hash('sha256', $userPassword . $salt);
私鑰作為用戶輸入
如果用戶可信,則要求他們在檢索時提供私鑰密碼可以提供額外的安全性。這可以防止伺服器端洩漏。
安全風險
加密的密碼可能容易受到:
緩解策略
緩解策略以上是如何在 PHP 中使用雙向加密安全地儲存和檢索密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!