当前位置:首页 > PHP > 正文内容

php非对称加密

高老师9年前 (2017-12-10)PHP2385

先在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

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/49.html

分享给朋友:

“php非对称加密” 的相关文章

php创建webservice,php搭建webservice,php编写webservice

php创建webservice,php搭建webservice,php编写webservice

第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存 //001...

 php监听事件,php触发事件

php监听事件,php触发事件

逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event {     /** &nbs...

php json_encode 使用注意

php json_encode 使用注意

参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...

php守护进程

php守护进程

<?php /**  * daemonize让当前脚本为守护进程执行  * @param string $callback 匿名函数  */ function daemonize($callback) {...

php  while  true  cpu占用100%

php while true cpu占用100%

在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) {     pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...

php redis事务

php redis事务

概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)(1)基本事务://连接本地的 Redis 服务 $redis = new Redis(); $redis->con...