mcrypt cbc php7,求PHP7.1 加密函数mcrypt_module_open()替换方案

本文介绍了在PHP7.1中MCrypt被弃用的情况,由于手册未明确给出警告和替代方案,作者通过实践发现可以使用OpenSSL作为替代。示例展示了如何使用OpenSSL进行AES对称加密和RSA非对称加密,为开发者提供了一个从MCrypt过渡到OpenSSL的参考。
摘要由CSDN通过智能技术生成

但是手册上并没有deprecated的Warning呀,自然也就没有说明替代方案.

而且我用PHP 7.0运行也没有这个不建议使用的提示.

最后就是你说的7.1还没有正式发布,你可以把它当做一个bug.

补充:

多谢楼下提醒,PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.

下面看看用OpenSSL实现对称加密AES和非对称加密RSA.

AES:

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

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";

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值