登录
首页 >  文章 >  php教程

PHP7.1 mcrypt_encrypt废弃后,如何用openssl_encrypt安全替代?

时间:2024-12-27 15:55:07 344浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《PHP7.1 mcrypt_encrypt废弃后,如何用openssl_encrypt安全替代?》,文章讲解的知识点主要包括,如果你对文章方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

PHP7.1 mcrypt_encrypt废弃后,如何用openssl_encrypt安全替代?

php7.1废弃加密方法替代方案: mcrypt_encrypt vs openssl_encrypt

在php7及以上版本中,mcrypt扩展已废弃不再支持。因此,在php7以上版本中,使用mcrypt_encrypt函数存在问题,需要寻找替代方案。

使用openssl_encrypt函数作为mcrypt_encrypt的替代方案,可以提供类似的功能。但是,使用openssl_encrypt实现加密时,输出结果与mcrypt_encrypt不一致。

原因分析:

  1. 密钥长度差异: mcrypt_encrypt可以自动选择加密算法的密钥长度,而openssl_encrypt始终遵循指定的算法。
  2. 初始化向量(iv)处理: mcrypt_encrypt在ecb模式下添加了iv处理,而openssl_encrypt在ecb模式下不支持iv。

解决方案:

为了解决这些问题,需要对openssl_encrypt函数的调用进行修改:

  • 指定正确的加密算法:将'aes-128-ecb'修改为'aes-192-ecb',以匹配mcrypt_encrypt使用的算法。
  • 去除iv处理:删除openssl_encrypt函数调用中的iv。

修改后的代码示例如下:

$key = '5AE8274196C85364D44938E47D80ACA6';
$text = '1222.01';

$cipher = 'aes-192-ecb';
$context = openssl_encrypt($text, $cipher, $key, OPENSSL_RAW_DATA);
$base64Context = base64_encode($context);

if ($base64Context === 'cPnrXHxzWG6e0GyC7X/kpg==') {
    echo "Output is consistent with mcrypt_encrypt.";
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《PHP7.1 mcrypt_encrypt废弃后,如何用openssl_encrypt安全替代?》文章吧,也可关注golang学习网公众号了解相关技术文章。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>