先在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...
//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
php多进程应用场景主要是非web端,fpm下是不支持多进程的,非类linux操作系统都不支持,请在cli模式使用.可以使用多进程做任务分发,批量计算,批量文件处理,批量爬虫,网络运维等等。下面看一份简单的入门demo//创建子进程 $pid=pcntl_fork(); //返回-1,创建失败,不...
php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习: (2.1)pcntl_fork()执行时: &nbs...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...