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, MCRYPT_MODE_ECB

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

被折叠的 条评论
为什么被折叠?



