先在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 $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0'); //关闭WSDL缓存 //001...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...
<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) {...
在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) { pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...
概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)(1)基本事务://连接本地的 Redis 服务 $redis = new Redis(); $redis->con...