先在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 //对比$this和self /* * $this更倾向于对象本身 * */ class Par{ public  ...
面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...
php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){ //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...
posix_ttyname - 获取当前终端设备名称。<?php var_dump( posix_ttyname(STDOUT) );我们启动一个终端,执行上面的代码输出:/dev/tty1我们再启动一个终端,执行上面的代码输...
最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...
(1).管道是干嘛的?管道是用于进程之间通信的,传播或交换信息(2).管道有几种?(2.1).匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。通常是指父子进程关系。(2.2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中...