php5 rsa加密,附录五 RSA加密解密

# RSA加密解密

PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了。

举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了。

密码没加密,那攻击者就直接拿到了密码,这是最搓的。

密码加密了,是不可逆加密,那攻击者只需要模拟那个请求即可登录。

密码加密了,是可逆加密,其中携带有时间等参数,后台可以根据时间等参数来判断是否有效,但因为是在前端加密,其加密方式也能在代码中找到,找到加密方式就可以得出解密方式。

但是如果我们使用非对称加密就可以避免以上问题。

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

工作过程如下,甲乙之间使用非对称加密的方式完成了重要信息的安全传输。

不说其他的了 上源码

最新修正了win平台ssl config路径问题

~~~

/**

* Created by PhpStorm.

* Power by Mikkle

* QQ:776329498

* Date: 2017/4/18

* Time: 9:49

*/

namespace app\erp\controller;

use app\base\controller\Rsa;

class Test extends Base

{

public function index(){

header('Content-Type:text/html;Charset=utf-8;');

$string = isset($_GET['a']) ? $_GET['a'] : '测试123';

//证书路径

$pubfile = ROOT_PATH.'ssl/test.crt';

$prifile = ROOT_PATH.'ssl/test.pem';

//apache路径下的openssl.conf文件路径

$openssl_config_path = "D:/phpStudy/Apache/conf/openssl.cnf";

$rsa =new Rsa($pubfile,$prifile,$openssl_config_path);

echo "

";

//生成签名

echo "\n签名的字符串:\n$string\n\n";

$sign = $rsa->sign($string);

echo "\n生成签名的值:\n$sign";

//验证签名

$p=$rsa->verify($string, $sign);

echo "\n验证签名的值:\n$p";

//加密

echo "\n\r加密的字符串:\n$string\n\n";

$x = $rsa->encrypt($string);

echo "\n生成加密的值:\n$x";

//解密

$y = $rsa->decrypt($x);

echo "\n解密的值:\n$y";

echo "

";

//创建新的密匙

echo "\n创建新的密匙:\n";

$rsa->buildNewKey();

}

~~~

运行结果:

![](https://box.kancloud.cn/0118a53436f9059f606d9546f268fdd8_653x1002.png)

> 使用的时候 自己记得把密匙存为指定的文件

> $pubfile = ROOT_PATH.'ssl/test.crt';

> $prifile = ROOT_PATH.'ssl/test.pem';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值