首页 > 后端开发 > php教程 > 如何安全地检索 PHP 中的加密密码?

如何安全地检索 PHP 中的加密密码?

DDD
发布: 2024-12-27 12:52:13
原创
985 人浏览过

How Can I Securely Retrieve Encrypted Passwords in PHP?

安全密码检索:超越加密和哈希

虽然确保数据安全至关重要,但存储密码等敏感信息带来了独特的挑战。对它们进行加密以供以后检索似乎违反直觉,因为加密的本质在于使数据无法访问。然而,一个明确定义的加密和解密策略可以克服这个障碍。

在 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
    ),
    ""
);
登录后复制

基本注意事项

需要注意的是,提供的代码对信息进行加密,但不会对密文进行身份验证,以防止篡改。为了增强安全性,建议不要仅依赖未经身份验证的加密。

其他资源

探索以下资源以进一步了解见解:

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/2224584

注意:加密密钥安全

切勿使用“密码”作为加密密钥;加密密钥应该是随机字符串。

以上是如何安全地检索 PHP 中的加密密码?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板