安全密码检索:超越加密和哈希
虽然确保数据安全至关重要,但存储密码等敏感信息带来了独特的挑战。对它们进行加密以供以后检索似乎违反直觉,因为加密的本质在于使数据无法访问。然而,一个明确定义的加密和解密策略可以克服这个障碍。
在 PHP 中,你不能简单地使用 bcrypt 这样的哈希函数来存储密码,因为它是一种单向转换,导致无法检索。为了解决这个问题,请考虑使用加密和加扰方法的组合,这样您就可以在保留其安全性的同时检索原始密码。
全面的加密解决方案
安全地加密和解密密码,考虑以下 PHP code:
$key = 'password to (en/de)crypt'; $string = ' string to be encrypted ';
// Encryption $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 ) );
// Decryption $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中文网其他相关文章!