博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java与php rsa加密互通
阅读量:6227 次
发布时间:2019-06-21

本文共 1232 字,大约阅读时间需要 4 分钟。

  hot3.png

第三方提供的java rsa秘钥(pkcs8格式),PHP不能直接使用;只能将rsa秘钥转成pkcs1格式。然后再按照PHP rsa秘钥格式处理,每64个字符进行换行处理。

先转成pkcs1格式,用支付宝转换工具;

代码如下:

function format_secret_key($secret_key, $type){   // 64个英文字符后接换行符"\n",最后再接换行符"\n"   $key = (wordwrap($secret_key, 64, "\n", true))."\n";   // 添加pem格式头和尾   if ($type == 'pub') {      $pem_key = "-----BEGIN PUBLIC KEY-----\n" . $key . "-----END PUBLIC KEY-----\n";   }else if ($type == 'pri') {      $pem_key = "-----BEGIN RSA PRIVATE KEY-----\n" . $key . "-----END RSA PRIVATE KEY-----\n";   }else{      echo('公私钥类型非法');      exit();   }   return $pem_key;}

这样就生成PHP能用的rsa秘钥啦

按照java接口指定的加密方式选择相应的选项

public function sign($data = '') {   if (empty($data)){      return false;   }   $private_key = $this->getPrivateKey();   $private_key = $this->format_secret_key($private_key,'pri');   if (empty($private_key)){      echo "Private Key error!";      return false;   }   $pkeyid = openssl_get_privatekey($private_key);   if (empty($pkeyid)){      echo "private key resource identifier False!";      return false;   }   $verify = openssl_sign($data,$signature,$pkeyid,OPENSSL_ALGO_MD5);   openssl_free_key($pkeyid);   return $verify ? base64_encode($signature) : false;}

这样就完成了

转载于:https://my.oschina.net/ranhai/blog/2993365

你可能感兴趣的文章
Linux里面非常重要的目录
查看>>
angular-seed — AngularJS种子项目
查看>>
开发人员准确理解技术需求:用户想得与说的不一样
查看>>
OpenCV 颜色空间转换参数CV_BGR2GRAY改变
查看>>
Allegro PCB Design GXL (legacy) 从dxf文件中导入板框
查看>>
手撸系列之——ORM(对象关系映射)
查看>>
iOS - OC RunLoop 运行循环/消息循环
查看>>
php smarty使用..
查看>>
FLV文件格式解析
查看>>
将Sqlserver2012Express的mdf文件同步到SqlServer2008
查看>>
10条影响CSS渲染速度的写法与建议(摘抄HTML5中国)
查看>>
选项卡
查看>>
【深度学习】一文读懂机器学习常用损失函数(Loss Function)
查看>>
php判断数据类型
查看>>
css 定位标签设置格式
查看>>
js-实现鼠标滑轮滚动实现换页
查看>>
windows下通过.bat运行java程序
查看>>
Zabbix二次开发_01基础
查看>>
几何画板演示多边形滚动动画的方法
查看>>
指令处理的数据的长度
查看>>