首页 >后端开发 >php教程 >如何使用 PHP 安全地加密和解密数据?

如何使用 PHP 安全地加密和解密数据?

Susan Sarandon
Susan Sarandon原创
2024-12-22 19:14:10718浏览

How to Securely Encrypt and Decrypt Data Using PHP?

如何在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn