文档章节

PHP 中的 SHA1WithRSA

汤汤圆圆
 汤汤圆圆
发布于 04/20 11:56
字数 302
阅读 86
收藏 0

最近和java对接接口看文档就是rsa 一开始怎么也调不通;以为就是rsa 加密一把 他们只给一个key 一个字符串

MIIBVAIBADxxxxxxxEAAkEApWBS7aJbksmufLQZ889vhw5Uy93xGOqe3/YS5/trqgDMA9iZKNxttyBnU7ffj0c3bas7jUklZRnGlO7Tb+Aa8QIDAQABAkBeA7GBSKB4hVE9sYFjepSzmbEZKLYsbQ0e0xySZvsg7GMJFjFAbcFaqD7W4bFbG34QKvrEELbmRyxxxxx0yApG/yJPJlCXzN5Iaavcszx1al7mKPK8PECIQDIhtVhmgYEIM3W/TxxxxxxxxxxxxxJZ38VSU42phAEDBeq59IKkc15hyBQSgXnuM0x2yfszBAiBjS4D155L7ExxxxVhU/F/lMD7oOGoAQIgEM5LXv1q8Suf1oIDetZB4T7jMQ4vgRpQfR0g8YEFR/Y=

我就简单的调用

$pu_key = openssl_pkey_get_private($interface_key); 会报错 // openssl_pkey_get_private(): key param is not a valid private key
var_dump($pu_key)
openssl_private_encrypt($sign, $resSign, $pu_key);

其实正规生成的pem 文件格式确实不和前面一样;最后让java给一个java的demo 最后看到SHA1WithRSA 就网上搜了一下php的实现

<?php
//生成 sha1WithRSA 签名 
function genSign($toSign, $privateKey){
	//这里他是拼接成和pem文件一样的格式
    $privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" .
        wordwrap($privateKey, 64, "\n", true) .
        "\n-----END RSA PRIVATE KEY-----";

    $key = openssl_get_privatekey($privateKey);
    openssl_sign($toSign, $signature, $key);
    openssl_free_key($key);
    $sign = base64_encode($signature);
    return $sign;
}

//校验 sha1WithRSA 签名
function verifySign($data, $sign, $pubKey){
    $sign = base64_decode($sign);

    $pubKey = "-----BEGIN PUBLIC KEY-----\n" .
                wordwrap($pubKey, 64, "\n", true) .
                "\n-----END PUBLIC KEY-----";

    $key = openssl_pkey_get_public($pubKey);
    $result = openssl_verify($data, $sign, $key, OPENSSL_ALGO_SHA1) === 1;
    return $result;
}

//测试
$privateKey = "xx....";
$pubKey = "xxx....";

//生成签名
$sign = genSign("test", $privateKey);
//校验签名
$rs = verifySign("test", $sign, $pubKey);
var_dump($rs);

来源

© 著作权归作者所有

上一篇: go包 相关说明
下一篇: GO redis 相关操作
汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26104
作品 0
昌平
程序员
私信 提问
【HAVENT原创】前端使用 jsrsasign 进行 RSA 加密、解密、签名、验签

最近因项目需求,需要配合 JAVA 后端返回的签名,在 H5 网页中做验签功能。网上搜了一下发现了 jsrsasign 满足需求,所以顺便研究了一下 jsrsasign 。 首先去官网下载压缩包,解压后只需要引...

HAVENT
05/24
44
0
golang的SHA1withRSA的实现

背景 有一个与第三方系统对接的需求,协议是比较简单,但发现协议有个字段是签名,而怎么签名并没有细说,从提供的demo里看是采用java的SHA1withRSA,然而百度了一翻没有看到介绍,出动Googl...

suit
2016/05/24
2.9K
2
RSA加解密VS加签与验签

原则: 1) 公钥加密数据 2)私钥进行签名 3)公私钥互加解密密钥。 JAVA package com.zlbank.rsa; import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.I......

燃烧NO1
2015/12/01
646
0
SSL/TLS双向认证案例参考

一.首先我们需要生成服务器端和客户端的数字证书并添加信任 实际应用环境里,需要向CA机构申请服务器证书。这里我们为了测试方便通过Keytool工具生成自签名证书来模拟。 注:相关参数说明请...

F风向标F
2014/09/13
3.2K
0
关于支付宝退款接口问题,困扰我两天了

有哪位大神调用过支付宝的退款接口, 最近在研究这个接口,用的JAVA的SDK, 但一直不成功。 DEBUG源码, 发现个问题: 根据支付宝文档上生成私钥的方法来看,是已经经过PKCS8 的, 但为什么源...

hellotrms
2016/05/06
4.7K
2

没有更多内容

加载失败,请刷新页面

加载更多

Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
49分钟前
4
0
PyTorch入门笔记一

张量 引入pytorch,生成一个随机的5x3张量 >>> from __future__ import print_function>>> import torch>>> x = torch.rand(5, 3)>>> print(x)tensor([[0.5555, 0.7301, 0.5655],......

仪山湖
今天
5
0
OSChina 周二乱弹 —— 开发语言和语言开发的能一样么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌:#今日歌曲推荐# 分享The Score的单曲《Revolution》 《Revolution》- The Score 手机党少年们想听歌,请使劲儿戳(这里) @批判派...

小小编辑
今天
2.6K
19
oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
3
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部