文档章节

PHP --- openssl加密

0_0Loong
 0_0Loong
发布于 2017/08/16 15:49
字数 347
阅读 76
收藏 0

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显示内容如下:

 

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

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

 

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

命令生成公钥。

 

 

关于加密的使用

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

<?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;
    }

 

© 著作权归作者所有

0_0Loong
粉丝 8
博文 69
码字总数 64426
作品 0
西安
程序员
私信 提问
看完秒懂对称加密、非对称加密、数字签名

对称加密算法 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大...

yushiwh
2018/07/11
0
0
[安全] 关于 RSA 算法的原理与实践

当代信息网络发展至今,覆盖面已经非常广泛,广大用户使用这个互联网络来分享信息,搜索资料,进行商业交易等等,可以说是无处不在,也因为这样,这个领域中的信息安全也就变得越来越重要。在...

长平狐
2012/11/19
841
0
php使用openssl来实现非对称加密

使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。 安装openssl和php的openssl扩展 生成私钥:openssl genrsa 用于生成rsa私钥文件,生成是可以指定...

edgeto
2017/10/22
0
0
PHP 迁移 Mcrypt 至 OpenSSL 加密算法详解

对称加解密算法中,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇:Mcrypt 和 OpenSSL。 其中 Mcrypt 在 PHP 7.1.0 中被 Depr...

big_cat
03/03
0
0
eBay CEO作序推荐《web商务安全设计与开发宝典》:对称加密系统

eBay CEO作序推荐《web商务安全设计与开发宝典》:对称加密系统 使 用密码的目的是防止信息在传输和存储过程中被除目标接受者以外的任何人读取和理解。理想情况下,未经授权的个人永远都不能...

louise
2012/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spark Streaming的优化之路——从Receiver到Direct模式

          作者:个推数据研发工程师 学长 1 业务背景 随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架MapReduce已经不能满足业务,大量的场景需要实时的数据处理结果来...

个推
56分钟前
3
0
壮丽70年·奋斗新时代|蒸妙集团熏蒸中会阴熏蒸的神奇好处

聚结相合之处为会。会阴居两阴间,为督、任、冲三脉的起点,三脉背出两阴之间,会聚阴部,因名会阴。会阴,经穴名。出《针灸甲乙经》。会阴别名屏翳、下极、金门。属任脉。在会阴部,男性当阴...

公益传承
今天
2
0
pentaho-kettle-8.2.0.0-R源码开发环境搭建

1.从Kettle官网下载源码,本文使用的是pentaho-kettle-8.2.0.0-R 下载地址:https://codeload.github.com/pentaho/pentaho-kettle/zip/8.2.0.0-R 2.打开eclipse,选择一个新的工作空间,然后设...

gq_2010
今天
1
0
lua web快速开发指南(7) - 高效的接口调用 - httpc库

httpc库基于cf框架都内部实现的socket编写的http client库. httpc库内置SSL支持, 在不使用代理的情况下就可以请求第三方接口. httpc支持header、args、body、timeout请求设置, 完美支持各种h...

水果糖的小铺子
今天
5
0
通过四道常问面试题,带你了解什么是数据库分库分表

编者语:为了避免被误解为:「手里有把锤子,看什么都是钉子!」,说明一下不是什么业务都适合分布式数据库,更不是用了分布式数据库性能就一定能得到扩展。 其次:本文为纯干货,建议先转发...

老道士
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部