PHP --- openssl加密

php openssl rsa 加密解密应用

 

首先关于安装openssl。参考安装xdebug的类似。

到php源码包的目录 ext/openssl 下执行:

/data/apps/php/bin/phpize

./configure --with-openssl --with-php-config=/data/apps/php/bin/php-config
make
make install

(可能需要mv config0.m4 config.m4)

把生成的 openssl.so 文件添加到php.ini中

extension = /xxx/openssl.so;

可以用以下命令查看安装的模块:

php -m |grep openssl

 

另外对于添加公钥私钥:

----------------------------------------------------------------

1.打开Terminal--cd 到指定文件夹MyTestCert

kenMac:~ MyTestCert$openssl

2.genrsa -out rsa_private_key.pem 2048
生成私钥。接下来Terminal显示内容如下:

154004_MSti_2365565.png

 

3. pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt

把RSA私钥转换成PKCS8格式。提示输入密码,密码为空(直接回车)就行

154103_VPFm_2365565.png

 

4.rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

命令生成公钥。

154147_dP6v_2365565.png

 

 

关于加密的使用

-----封装加密部分----

<?php


namespace common\helpers;
use Yii;
use yii\base\ErrorException;


class DesOpenssl
{

    public $pubkey;
    public $privkey;

    function __construct() {
        $this->pubkey = file_get_contents('/Applications/MAMP/bin/php/php7.1.0/rsa_public_key.pem');
        $this->privkey = file_get_contents('/Applications/MAMP/bin/php/php7.1.0/rsa_private_key.pem');
    }

    public function desEncode($data) {
        if (openssl_public_encrypt($data, $encrypted, $this->pubkey))
            $data = base64_encode($encrypted);
        else
            throw new ErrorException('Unable to encrypt data. Perhaps it is bigger than the key size?');

        return $data;
    }

    public function desDecode($data) {
        if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))
            $data = $decrypted;
        else
            $data = '';

        return $data;
    }

}

 

----加密的使用-----

 public function actionOut()
    {
        //加密
        $d = new DesOpenssl();
        $data = $d->desEncode('data={"key":"11111"}');
        echo $data;
        //解密
        $d = new DesOpenssl();
        $data = $d->desDecode("ugK2lblZxK9xpYpw0mwBgbIMI3ghhLyRuYrUkGiVLmVUildo4cCM52RNcxpKQFIzO3Shubatsxn98RPGm6CChE2EjIb+GdKUMB3ItfiVYAtBFW1mSubwU4bS3iQqCGz9i8spbZyINQvGtOn91MWTK7UrOoGoe54SrArRJLAidRK+g8aABChBADY6Lj7nSlRoko8GhpT/5oHwAil4gnFrgiiGX/UxEjP4WQv7qw/12yR/vCUAHjV+5bLMLesrFSVjFQbzTpzaX+XnMLouzXHQTpWrTaWL6UOfhDWD9NSOjPXWbTccpEg1UDpGbbj9cGzSRI1fWygK6B4e+Lvi/BV8+Q==");
        echo $data;
    }

 

转载于:https://my.oschina.net/jlong/blog/1511217

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值