php的mcrypt扩展已废弃问题解决

php 的 mcrypt_ 函数簇在 7.1.0 版本中开始 deprecated,并在 7.2.0 版本中彻底废弃。如果当前项目存在mcrypt_ encrypt这种函数又想更新php到最新版本


官方推荐使用openssl_encrypt/openssl_decrypt替代mcrypt_encryptmcrypt_decrypt

MCRYPT_RIJNDAEL_256 并不是 AES-256,如果想使用 mcrypt_簇 实现 AES-256,则你应该使用 MCRYPT_RIJNDAEL_128 算法 + 32位的 key,openssl_簇 则更为清晰的明确了各种模式。这里我整理了一下对应关系供大家参考:

MCRYPT_RIJNDAEL_128 & CBC + 16位Key = openssl_encrypt(AES-128-CBC, 16位Key) = AES-128
MCRYPT_RIJNDAEL_128 & CBC + 24位Key = openssl_encrypt(AES-192-CBC, 24位Key) = AES-192
MCRYPT_RIJNDAEL_128 & CBC + 32位Key = openssl_encrypt(AES-256-CBC, 32位Key) = AES-256

我们这里写个例子

mcrypt代码:

<?php

$key = 'keykeykey';

//注意这里我使用的32位的key
$key = md5(md5($key) . 'salt');

$iv = md5($key, true);

$data = 'asdfgh';

$encode = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CFB, $iv);

$encode = base64_encode($encode);

echo $encode . PHP_EOL;

//处理解密

$decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encode), MCRYPT_MODE_CFB, $iv);

echo $decode;

echo PHP_EOL;

openssl代码

$key = 'keykeykey';
$key = md5(md5($key) . 'salt');
$iv = md5($key, true);

$data = 'asdfgh';

$encode = openssl_encrypt($data, 'aes-256-cfb', $key, OPENSSL_RAW_DATA, $iv);

//完美替换$encode = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CFB, $iv);

$encode = base64_encode($encode);

echo $encode . '<br>';

//解密

$decode = openssl_decrypt(base64_decode($encode), 'aes-256-cfb', $key, OPENSSL_RAW_DATA, $iv);

echo $decode;

重点是openssl这里,我使用的是aes-256-cfb(因为mcrypt那里使用的是32位的key,如果是16位的key请参考上面对应关系)



原创文章,作者:DUXPD,如若转载,请注明出处:http://www.wangzhanshi.com/n/16560.html

(0)
DUXPD的头像DUXPD
上一篇 2025年1月2日 12:39:21
下一篇 2025年1月2日 12:39:23

相关推荐

  • 如何选择靠谱的网站安全证书

    今天小编给大家分享的是如何选择靠谱的网站安全证书,相信很多人都不太了解,为了让大家更加了解网站安全证书,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 截至去年底,我…

    2025年1月2日
  • php7安装openssl扩展的方法是什么

    php7安装openssl扩展的方法:1、进入openssl扩展目录;2、运行phpize;3、通过“yum install openssl”执行安装;4、打开php.ini添加“…

    2025年1月2日
  • win7关闭证书服务器的方法

    Win7系统中很多的小程序服务其实大家在平时都用不上,这些服务和进程不仅占用了很大部分的资源,而且还会影响系统的运行速度和安全。 一、如何关闭证书服务器 我们可以关闭那些不常用的服…

    2025年1月2日
  • 如何使用OpenSSL加密和解密文件

    加密是对消息进行编码的一种方法,这样可以保护消息的内容免遭他人窥视。一般有两种类型: 密钥加密或对称加密 公钥加密或非对称加密 密钥加密secret-key encryption使…

    ssl证书 2025年1月2日
  • Linux中openssl命令怎么用

    Linux常用命令OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 open…

    2025年1月2日
  • SSL证书过期如何解决

    很多网站在使用SSL证书的时候,经常会发现浏览不了,一个很大的原因就是显示说证书过期了,那么到底什么是证书过期呢?SSL证书也会过期吗,有没有SSL证书过期解决方法呢,下面就来看看…

    2025年1月2日
  • 如何在Nginx中配置ssl证书

    一、Http与Https的区别 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议…

    2025年1月2日
  • 升级openssl和openssh的shell脚本是怎样的

    #!/bin/bash # 关闭SELinux sed -i 's/enforcing$/disabled/g' /etc/selinux/config set…

    ssl证书 2025年1月2日
  • ssl证书怎么续费要注意什么

    一、ssl证书续费 ssl证书操作相当于是在控制台上重新申请一张新的ssl证书用户新安装部署在服务器上的新证书是不会影响现在的证书,正常使用的ssl证书续费,如果是信息需要变更重新…

    2025年1月2日
  • 什么是SSL数字证书?如何申请

    现在是一个网络发达的时代,网站也开始变得非常的普遍,很多人在创业或者是其他事情中都会用到网站,但是很多朋友可能对于网站中的一些安全证书不太了解。SSL数字证书就是其中的一种,所以接…

    2025年1月2日

发表回复

登录后才能评论