首页 > 后端开发 > php教程 > 如何在 PHP 7.2 中将我的 PHP Mcrypt 加密代码迁移到 OpenSSL?

如何在 PHP 7.2 中将我的 PHP Mcrypt 加密代码迁移到 OpenSSL?

Barbara Streisand
发布: 2024-12-06 20:01:12
原创
806 人浏览过

How to Migrate My PHP Mcrypt Encryption Code to OpenSSL in PHP 7.2?

准备在 PHP 7.2 中删除 Mcrypt:从 Mcrypt 到 Openssl 的代码转换

随着 PHP 7.2 的出现,深受喜爱的 Mcrypt 扩展将被逐步淘汰。作为开发人员,为这一变化做好准备并考虑采用更安全的 Openssl 替代方案至关重要。

本文重点介绍开发人员在过渡期间面临的常见挑战:将代码从 Mcrypt 转换为 Openssl,同时保留 AES 256 CBC 和 IV。

考虑以下 Mcrypt 代码:

function encrypt($masterPassword, $data) {
    // Mcrypt AES 256 CBC operations
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv);
    return base64_encode($iv . $encrypted);
}

function decrypt($masterPassword, $base64) {
    // Mcrypt AES 256 CBC operations
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $data = base64_decode($base64);
    $iv = substr($data, 0, $ivSize);
    $encrypted = substr($data, $ivSize, strlen($data));
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
    return trim($decrypted);
}
登录后复制

转换将此代码发送到 Openssl,您应该意识到一个关键的区别:Mcrypt 的 Rijndael-256 与 AES-256 不同。 OpenSSL 支持 AES-256,即具有 256 位密钥的 Rijndael-128。

因此,不幸的是,直接代码转换是不可能的。您必须使用正确的 AES-256 操作重新加密所有数据。

此外,当前的 Mcrypt 加密方案缺乏身份验证、适当的填充和字节安全。强烈建议采用更强大的加密库,如 defuse/php-encryption,以提高安全性。

通过了解 Mcrypt 和 Openssl 之间的差异,并解决现有加密方案的缺点,可以有效地为在 PHP 7.2 中删除 Mcrypt 并维护加密数据的完整性和安全性。

以上是如何在 PHP 7.2 中将我的 PHP Mcrypt 加密代码迁移到 OpenSSL?的详细内容。更多信息请关注PHP中文网其他相关文章!

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