今天把php升级到7.1了,结果发现这个函数不建议使用:
mcrypt_module_open() is deprecated
请问还有其它方案来替换吗?
==============================
因为7.1还没有正式发布,而且7.1的发布文档上面写了以后不建义使用类似mcrypt的扩展,所以该问题目前无解。如果有遇到相同问题的同学,请使用5版或7.0版 。
今天把php升级到7.1了,结果发现这个函数不建议使用:
mcrypt_module_open() is deprecated
请问还有其它方案来替换吗?
==============================
因为7.1还没有正式发布,而且7.1的发布文档上面写了以后不建义使用类似mcrypt的扩展,所以该问题目前无解。如果有遇到相同问题的同学,请使用5版或7.0版 。
mcrypt 扩展在 7.1 已经被 deprecated, 在 7.2 会被从内置迁到 PECL 里。
如果需要完全兼容只能忽略 deprecated 使用;
如果只是需要类似功能的替代品,官方建议是使用 OpenSSL 扩展。
具体可以看官方手册。
但是手册上并没有deprecated
的Warning呀,自然也就没有说明替代方案.
而且我用PHP 7.0运行也没有这个不建议使用的提示.
最后就是你说的7.1还没有正式发布,你可以把它当做一个bug.
补充:
多谢楼下提醒,PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.
下面看看用OpenSSL实现对称加密AES和非对称加密RSA.
AES:
<?php
header('Content-Type: text/plain;charset=utf-8');
$data = 'phpbest';
$key = 'oScGU3fj8m/tDCyvsbEhwI91M1FcwvQqWuFpPoDHlFk='; //echo base64_encode(openssl_random_pseudo_bytes(32));
$iv = 'w2wJCnctEG09danPPI7SxQ=='; //echo base64_encode(openssl_random_pseudo_bytes(16));
echo '内容: '.$data."\n";
$encrypted = openssl_encrypt($data, 'aes-256-cbc', base64_decode($key), OPENSSL_RAW_DATA, base64_decode($iv));
echo '加密: '.base64_encode($encrypted)."\n";
$encrypted = base64_decode('To3QFfvGJNm84KbKG1PLzA==');
$decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', base64_decode($key), OPENSSL_RAW_DATA, base64_decode($iv));
echo '解密: '.$decrypted."\n";
?>
RSA:
用openssl生成rsa密钥对(私钥/公钥):
openssl genrsa -out rsa_private_key.pem 1024
openssl rsa -pubout -in rsa_private_key.pem -out rsa_public_key.pem
<?php
header('Content-Type: text/plain;charset=utf-8');
$data = 'phpbest';
echo '原始内容: '.$data."\n";
openssl_public_encrypt($data, $encrypted, file_get_contents(dirname(__FILE__).'/rsa_public_key.pem'));
echo '公钥加密: '.base64_encode($encrypted)."\n";
$encrypted = base64_decode('nMD7Yrx37U5AZRpXukingESUNYiSUHWThekrmRA0oD0=');
openssl_private_decrypt($encrypted, $decrypted, file_get_contents(dirname(__FILE__).'/rsa_private_key.pem'));
echo '私钥解密: '.$decrypted."\n";
?>
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答842 阅读✓ 已解决
2 回答513 阅读✓ 已解决
929 阅读
2 回答562 阅读
非常不赞同 @eechen 的说法,谁说手册上没说的!?
http://php.net/manual/zh/migr...
引用手册原文:
在PHP 7.1中还能在PHP安装包中找到和使用mycrypt扩展,在PHP 7.2中会被移除,不过我们依然可以从PECL下载到源码,编译和安装这个扩展。
不过最好还是遵循PHP的建议,通过OpenSSL逐渐取代mcrypt所扮演的角色。