当前位置: 首页 > 工具软件 > MCrypt > 使用案例 >

PHP7.0.32安装 mcrypt 扩展

房子昂
2023-12-01

求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

注意:

  • mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。
  • 不过最好还是遵循PHP的建议,通过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";
?>

运行程序报异常找不到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
 类似资料: