如何在PHP 中安全地加密和解密密碼
存儲敏感的用戶信息,例如外國帳戶憑證,需要採取特殊的預防措施以確保資料安全。雖然加密提供了一層保護,但採用可靠的方法來防止未經授權存取純文字資料至關重要。
雜湊與加密
雜湊是首選方法密碼儲存。與加密不同,雜湊將密碼不可逆地轉換為唯一且不可逆的格式,幾乎不可能檢索原始密碼。這確保即使攻擊者獲得了哈希密碼的存取權限,他們也無法危害用戶帳戶。
加密和解密函數
對於需要加密的情況,PHP提供了多種加密和解密文字的函數。一種常見的方法是 Rijndael 密碼,也稱為AES-128:
$key = 'password to (en/de)crypt'; $string = ' string to be encrypted '; // note the spaces
加密:
$iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM ); $encrypted = base64_encode( $iv . mcrypt_encrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), $string, MCRYPT_MODE_CBC, $iv ) );
到解密:
$data = base64_decode($encrypted); $iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, hash('sha256', $key, true), substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $iv ), "" );
到解密:
警告如果未經身份驗證,加密資料很容易受到填充預言機攻擊。經過身份驗證的加密機制應始終與加密結合使用。
最佳實踐以上是如何使用 PHP 安全地加密和解密資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!