php7报错Function mcrypt_get_block_size() is deprecated

本文介绍了在PHP7中遇到`mcrypt_get_block_size()`函数被弃用的问题,以及如何通过使用openssl来替代mcrypt。在转换过程中需要注意openssl_encrypt对加密key长度有限制,仅接受16长度的key,不同于mcrypt中key长度无限制。文章通过代码示例展示了两种加密方式的不同结果,并提醒开发者此差异可能导致的混淆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php7报错Function mcrypt_get_block_size is deprecated

解决方案

mcrypt十年过去,现在php7+中已经开始淘汰。官方给出掉提示:
mcrypt_get_block_size — 获得加密算法的分组大小

Warning
This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

在php7中需要openssl替代,这里需要注意的是:

在mcrypt中对加密key长度没有限制要求,传入多少长度都会参加加密,但是在openssl_encrypt中。key长度只能是16长度,>16长度后,签名结果保持不变,这里是哥坑,在替代方案测试时候容易出错,具体直接上代码对比:

低于php7版本代码

class AES {
   

    public static function encrypt($input,$key) {
   

        $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);

        $paddedData = static::pkcs5_pad($input, $blockSize);

        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);

        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

        $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $paddedData, MC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值