求PHP7.1 加密函数mcrypt_module_open()替换方案
PHP Mcrypt 扩展模块安装及使用
PHP7.1中使用openssl替换mcrypt
linux版openssl生成rsa公私钥
php 7.2 安装 mcrypt 扩展
1.yum 安装依赖包
#yum install libmcrypt libmcrypt-devel mcrypt mhash
2.在 php 官网下载 mcrypt 包,php 扩展官网http://pecl.php.net/package/mcrypt
#wget http://pecl.php.net/get/mcrypt-1.0.1.tgz
#tar xf mcrypt-1.0.1.tgz
#cd mcrypt-1.0.1
3.编译安装 mcrypt
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
4.在php.ini加上扩展即可
#extension=mcrypt.so
5.重启 php-fpm
#/etc/init.d/php-fpm restart
#service php-fpm restart
6.重启Apache
#service httpd restart
注意:
下面看看用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";
?>
运行程序报异常找不到rsa_public_key.pem,rsa_private_key.pem
#openssl version -v //查看openssl的版本
//生成私钥 *.pem文件放在当前文件夹下
#openssl genrsa -out rsa_private_key.pem 1024
//对私钥进行PKCS#8编码
# openssl pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
//根据生成的私钥生成公钥
#openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout