先在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的session文件夹默认保存在同一个文件,随着访客的增多,访问的速度会非常慢,例如部分管理系统后台每天登陆1000次,1个月就创建了30000个session文件,一年后是多少?假设这个系统的用户是上万人呢?方法1:每个网站使用自己的session文件夹,代码如下:<?php $pat...
php调用Webservice基本语法如下:$url ='xxxxxxx.cn' //链接服务器端 $client = new SoapClient($url);通过以上语法已经连接到webservice,也可将wsdl在本地使用,...
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...
001源码:/* * $xml_str是xml字符串 */ function xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...