先在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 $a=0.5*100; if(is_int($a)){ echo'int'; } else{ echo'not int'; } ...
通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...
header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...
项目中使用服务来执行webservice,由于对方系统api不稳定,经常导致服务崩溃,只能重启,一个月差不多要重启一次。初期的解决办法是捕获异常,然后continue掉。<?php try { $url = 'http...
Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...