先在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
<?php /* * 单粒模式,只能造出一个对象 1.肯定每次new只能返回一个对象,可以使用静态方法解决 2.子类继承也禁止重写构造方法,添加final搞定 * */ ...
<?php $base64_body = substr(strstr($_POST[base64],','),1); $data= base64_decode($base64_body); file_put_contents($_SERVER[&q...
<?php /* *算法学习自百度.只是学习和记录 */ header("Content-type:text/html;charset=utf-8"); //1.设置奖项,id是奖项id,name是中奖名称,v是中奖概率 $arr =&n...
如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...
使用php函数array_multisort()即可实现和SQL一样的order by排序. 例如我们需要对会员表按照主键降序排列,年龄升序排列://会员表数据 $list = []; $list[] = ['mid' =>&n...
最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...