php的mcrypt扩展已废弃问题解决-创新互联

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

创新互联公司主营柯城网站建设的网络公司,主营网站建设方案,重庆App定制开发,柯城h5重庆小程序开发搭建,柯城网站营销推广欢迎柯城等地区企业咨询

官方推荐使用openssl_encrypt/openssl_decrypt替代mcrypt_encrypt和mcrypt_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代码:

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 . '
'; //解密 $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请参考上面对应关系)

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:php的mcrypt扩展已废弃问题解决-创新互联
地址分享:http://pwwzsj.com/article/hodgi.html