《PHP教程:php对接java现实加签验签的实例》要点:

本文介绍了PHP教程:php对接java现实加签验签的实例,希望对您有用。如果有疑问,可以联系我们。

PHP教程java生成的密钥主要是字符串;而pem格式密钥是以64位为一行,并且带有如下头和尾的文件格式,然后php再去取得相对应pem格式字符串.

PHP教程pem格式密钥

PHP教程

-----BEGIN PUBLIC KEY-----

//64chars一行(多行)

-----END PUBLIC KEY-----

-----BEGIN RSA PRIVATE KEY-----

//64chars一行(多行)

-----END RSA PRIVATE KEY-----

PHP教程1.java密钥转为pem格式的php代码

PHP教程

/**

* 将字符串格式公私钥格式化为pem格式公私钥

* @param $secret_key

* @param $type

* @return string

*/

public static 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教程2.加签

PHP教程

/**

* RSA加签

* @param $paramStr

* @param $priKey

* @return string

*/

public static function sign($paramStr, $priKey){

$sign = '';

//将字符串格式公私钥转为pem格式公私钥

$priKeyPem = SignUtil::format_secret_key($priKey, 'pri');

//转换为openssl密钥,必须是没有经过pkcs8转换的私钥

$res = openssl_get_privatekey($priKeyPem);

//调用openssl内置签名方法,生成签名$sign

openssl_sign($paramStr, $sign, $res);

//释放资源

openssl_free_key($res);

//base64编码签名

$signBase64 = base64_encode($sign);

//url编码签名

$sign = urlencode($signBase64);

return $sign;

}

PHP教程3.验签

PHP教程

/**

* RSA验签

* @param $paramStr

* @param $sign

* @param $pubKey

* @return bool

*/

public static function verify($paramStr, $sign, $pubKey) {

//将字符串格式公私钥转为pem格式公私钥

$pubKeyPem = SignUtil::format_secret_key($pubKey, 'pub');

//转换为openssl密钥,必须是没有经过pkcs8转换的公钥

$res = openssl_get_publickey($pubKeyPem);

//url解码签名

$signUrl = urldecode($sign);

//base64解码签名

$signBase64 = base64_decode($signUrl);

//调用openssl内置方法验签,返回bool值

$result = (bool)openssl_verify($paramStr, $signBase64, $res);

//释放资源

openssl_free_key($res);

//返回资源是否成功

return $result;

}

PHP教程以上这篇php对接java现实加签验签的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持维易PHP.

php对接java验签,PHP教程:php对接java现实加签验签的实例相关推荐

  1. java jwt 验证_教程:用Java创建和验证JWT

    java jwt 验证 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...

  2. asp.net 与 java 2017_[ASP.net教程]C#与JAVA学习感悟

    [ASP.net教程]C#与JAVA学习感悟 0 2015-10-06 23:00:07 C#与JAVA学习感悟 学完C#与JAVA,感觉收获良多.C#与JAVA这两门语言相似度很高(了解它们早期历史 ...

  3. java和python自学教程_适合 Java开发者学习的Python 入门教程—文海思创

    原标题:适合 Java开发者学习的Python 入门教程-文海思创 [文海思创讯]在Java文章频道里,我们大部分人应该对该语言都非常的了解,而且在该生态圈内至少已经呆了好几年了.这让我们有常规和专业 ...

  4. windows java配置_菜鸟教程 windows 配置java的环境变量

    第一步:下载java的JDK 放在你们的D盘下面(其实C盘也一样),然后傻瓜是安装,安装路径一般默认放在 C:\Program Files\Java,这个不需要管. 第二步:直接上图 ... 看懂了吗 ...

  5. Java组件化开发教程!工信部java软件开发工程师证书

    这些面试题包含哪些内容? 借花献佛!朋友干了5年整的Java面试官,给我分享了一份面试官最爱问的Java面试题这份面试题包含了 19 个模块:Java 基础.容器.多线程.反射.对象拷贝.Java W ...

  6. SpringBoot 系列教程(八十五):Spring Boot使用MD5加盐验签Api接口之前后端分离架构设计

    加密算法参考: 浅谈常见的七种加密算法及实现 加密算法参考: 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 目的: 通过对API接口请求报文签名,后端进行验签处理, ...

  7. Java接入支付宝支付教程

    Java接入支付宝支付教程 一.创建应用 1.登录支付宝开放平台 支付宝开放平台网址:https://open.alipay.com/platform/developerIndex.htm 2.创建一 ...

  8. java接口有非抽象方法_[Java教程]纳尼,java可以在接口中实现非抽象方法了?

    [Java教程]纳尼,java可以在接口中实现非抽象方法了? 0 2016-09-17 18:00:20 纳尼,接口中可以定义实例方法了?! 纳尼,接口中还可以定义静态方法了?! 没错,在Java8中 ...

  9. js rsa验签_js rsa sign使用笔记(加密,解密,签名,验签)

    你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...

最新文章

  1. R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战
  2. python 帮助文档,撰写函数文档,并查看函数文档
  3. Vim 80列布局问题
  4. php peridot 使用教程,PHP测试框架Peridot-支持BDD
  5. 关于idea plugin测试那些事(纯手工翻译,只为打发时间,如果有错误,欢迎提建议,如果有意见,我相信别家一定更适合你)
  6. java进出栈_JVM函数调用:Java出入栈
  7. checking for C++ compiler default output file name
  8. [BZOJ] 3191 [JLOI2013]卡牌游戏
  9. mysqld --initialize --console失败_超详细的mysql awr监控系统系统搭建教程--第一部分...
  10. Swift——常量变量
  11. python程序停止运行、重新开始_求教,程序执行到末尾如何重新开始的问题。
  12. Hibernate关系映射(三) 多对一和一对多
  13. 频谱分析仪二次开发|频谱分析仪程控软件NS-Analyzer
  14. 计数器verilog代码(quartus II)
  15. 拼多多API接口(附上我的可用API)
  16. 批处理文件——BAT学习
  17. 女人血气不足很伤身体 做这5步立马解决
  18. 基于硬件的C(C++)语言程序设计教程5:更改Atmel Studio的语言设置
  19. 小程序源码:独家修复登录接口社区论坛-多玩法安装简单
  20. 在高德地图中获取鼠标点击的经纬度

热门文章

  1. deinterlace 隔行 progressive 逐行 3:2pulldown
  2. python实训小队项目总结
  3. 华三的AC对接绿洲平台的无线认证配置
  4. The Chicken and the Pig
  5. 史上最全3DMAX入门教程来啦,小白赶紧收藏!
  6. mysql 密码插件 validate_password
  7. 20210905 Ax=b的解的三种情况
  8. pandas处理字符串
  9. 2021高考成绩查询微信预约推送,2021高考微信推送文案内容
  10. 2002版《首席执行官》观后感及总结