php对接java验签,PHP教程:php对接java现实加签验签的实例
《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现实加签验签的实例相关推荐
- java jwt 验证_教程:用Java创建和验证JWT
java jwt 验证 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...
- 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这两门语言相似度很高(了解它们早期历史 ...
- java和python自学教程_适合 Java开发者学习的Python 入门教程—文海思创
原标题:适合 Java开发者学习的Python 入门教程-文海思创 [文海思创讯]在Java文章频道里,我们大部分人应该对该语言都非常的了解,而且在该生态圈内至少已经呆了好几年了.这让我们有常规和专业 ...
- windows java配置_菜鸟教程 windows 配置java的环境变量
第一步:下载java的JDK 放在你们的D盘下面(其实C盘也一样),然后傻瓜是安装,安装路径一般默认放在 C:\Program Files\Java,这个不需要管. 第二步:直接上图 ... 看懂了吗 ...
- Java组件化开发教程!工信部java软件开发工程师证书
这些面试题包含哪些内容? 借花献佛!朋友干了5年整的Java面试官,给我分享了一份面试官最爱问的Java面试题这份面试题包含了 19 个模块:Java 基础.容器.多线程.反射.对象拷贝.Java W ...
- SpringBoot 系列教程(八十五):Spring Boot使用MD5加盐验签Api接口之前后端分离架构设计
加密算法参考: 浅谈常见的七种加密算法及实现 加密算法参考: 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 目的: 通过对API接口请求报文签名,后端进行验签处理, ...
- Java接入支付宝支付教程
Java接入支付宝支付教程 一.创建应用 1.登录支付宝开放平台 支付宝开放平台网址:https://open.alipay.com/platform/developerIndex.htm 2.创建一 ...
- java接口有非抽象方法_[Java教程]纳尼,java可以在接口中实现非抽象方法了?
[Java教程]纳尼,java可以在接口中实现非抽象方法了? 0 2016-09-17 18:00:20 纳尼,接口中可以定义实例方法了?! 纳尼,接口中还可以定义静态方法了?! 没错,在Java8中 ...
- js rsa验签_js rsa sign使用笔记(加密,解密,签名,验签)
你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...
最新文章
- R语言droplevels函数删除因子变量(factor)没有用到的级别(level)实战
- python 帮助文档,撰写函数文档,并查看函数文档
- Vim 80列布局问题
- php peridot 使用教程,PHP测试框架Peridot-支持BDD
- 关于idea plugin测试那些事(纯手工翻译,只为打发时间,如果有错误,欢迎提建议,如果有意见,我相信别家一定更适合你)
- java进出栈_JVM函数调用:Java出入栈
- checking for C++ compiler default output file name
- [BZOJ] 3191 [JLOI2013]卡牌游戏
- mysqld --initialize --console失败_超详细的mysql awr监控系统系统搭建教程--第一部分...
- Swift——常量变量
- python程序停止运行、重新开始_求教,程序执行到末尾如何重新开始的问题。
- Hibernate关系映射(三) 多对一和一对多
- 频谱分析仪二次开发|频谱分析仪程控软件NS-Analyzer
- 计数器verilog代码(quartus II)
- 拼多多API接口(附上我的可用API)
- 批处理文件——BAT学习
- 女人血气不足很伤身体 做这5步立马解决
- 基于硬件的C(C++)语言程序设计教程5:更改Atmel Studio的语言设置
- 小程序源码:独家修复登录接口社区论坛-多玩法安装简单
- 在高德地图中获取鼠标点击的经纬度