先在centos安装openssl,然后开始:
//生成私钥
openssl genrsa -out rsa_private_key.pem 1024
//生成公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//将私钥和公钥文件放在网站目录开始测试
<?php //请开启php-openssl扩展 $privatefile='rsa_private_key.pem'; $publicfile ='rsa_public_key.pem'; //获取私钥 $privateKey=openssl_pkey_get_private(file_get_contents($privatefile)); //获取公钥 $publicKey = openssl_pkey_get_public(file_get_contents($publicfile)); if(!($privateKey && $publicKey)){ exit('私钥或公钥不可用!'); } //加密前的数据.加密传输订单编号 $orderid='MH201712091500107100'; //加密后的数据.用于网络中的传输.提前定义为空 $resorderid=''; //开始用私钥加密 if (openssl_private_encrypt($orderid, $resorderid, $privateKey)) { /** * 加密后可以base64_encode后方便在网址中传输或者打印,否则打印为乱码 */ echo '加密后'.base64_encode($resorderid)."\r\n"; } else { die('加密失败'); } //解密后的数据,提前定义为空 $backorderid=''; //开始用公钥解密 if (openssl_public_decrypt($resorderid, $backorderid, $publicKey)) { echo '解密后'.$backorderid."\r\n"; } else { die('解密失败'); } ?>
您也可以使用公钥加密,私钥解密。
注意:
(1).php里openssl只能用pem格式文件
(2).php使用PKCS#8格式的公钥或者私钥,例如微信支付企业打款到个人银行卡提供的密钥是PKCS#1格式的公钥,需要通过以下命令转换
PKCS#1 转 PKCS#8: openssl rsa -RSAPublicKey_in -in <filename> -pubout PKCS#8 转 PKCS#1: openssl rsa -pubin -in <filename> -RSAPublicKey_out
【一】.抽象类假设如下场景:团队准备开发某网站,表建好了,页面设计好了.A组负责开发底层数据库操作类(DB),B组负责调用DB类.但是此时A组发生了争执,MySQL? Oracle? DB2? sqlite?到底使用什么数据库?B组.... 进入漫长的等待.解决方法:A组和B组 先定1个数据库类的模...
源码:特别适用于微信支付中通知微信支付网关function array2xml($arr, $level = 1) { $s = $level == 1 ? "<xml&g...
<?php //php7+ define('CONFIG', [ 'MYSQL' => '127.0.0.1',  ...
概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)(1)基本事务://连接本地的 Redis 服务 $redis = new Redis(); $redis->con...
(1).管道是干嘛的?管道是用于进程之间通信的,传播或交换信息(2).管道有几种?(2.1).匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。通常是指父子进程关系。(2.2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中...