需要对接对方平台,对方给了一对 JAVA 生成的密钥,公钥加密私钥解密
私钥: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqxc7Qc1vV7TP5Z5rxmDt7Qmofu5ML6Ocg3RD2mrlrKmIF7X17QhrQZNk9bPi5aOrEnd2Yas0fOe1UMqizQknRwIDAQABAkBntr2FNjO4xzL_zvkmWLviZWhvCaXFezj1txUq4oI4F832rTp6g_RC_qNCaoyXG8pP1o6_Ex9uSd78RNcxyh4BAiEA6Goij3zW4CZmRC4cHJA3NkX_NGYSZEWh9Op3XG6etbcCIQC8c_knSl2TTzlA8L6MEiXSphxM-nNltBFkzm7H0jCa8QIgcN5SSGK1K4gadBP8fPagiY_2vyiu19llLL7NFqt2EgMCIE8V4FaTx8ddNOrC3URNDWBkY3YOmMTyl2YVl7n1xH4RAiEAlwhXLYqumZgDsEMzrupPvHR_mQ2AcslrwnEqlRCqvY8
我用公钥加密以后到对方平台得到的数据
XPc8EmPRO66Nie5Y9VMooprl14gY_l5kVqMWIP8rJOjRHXCqaekPK9gKUlxrdxyscJLbmNgXYGr5m8v-PrpLig
通过私钥用 php 并解不开,我查了一下网上说可以用支付宝的工具转换,但是转换了几次都提示密钥不正确,对方说密钥在 JAVA 上是正常的,所以想请大家帮看一下有没有办法解决,谢谢
1
jay4497 2020-06-03 08:42:35 +08:00 1
试试 phpseclib ?
|
2
neighbads 2020-06-03 08:45:30 +08:00 1
私钥拷贝少了吧,结尾少了 7 字节。
|
4
klgd 2020-06-03 08:47:47 +08:00 1
可以的 规则是相同的
|
5
nielinjie 2020-06-03 08:49:26 +08:00 1
可能是 java 生成的时候出了什么问题吧。秘钥这个东西是语言无关的,但只是理论上。哪个环节都可能出幺蛾子。
|
6
sadfQED2 2020-06-03 09:07:42 +08:00 via Android 3
私钥最好别在公网上面乱发吧,你都不怕出事么😂😂
|
7
lululau 2020-06-03 09:07:51 +08:00 via iPhone 1
常用的格式无非就是 pkcs8, pkcs12,openssl 命令转一下就可以了,跟编程语言没关系。另外按说一般场景下用不着自己做 rsa 加解密吧,https 不香吗,你要是说用来签名 /校验签名还能理解
|
8
xiangyuecn 2020-06-03 09:16:48 +08:00 1
试了一下这个,还以为是什么妖魔鬼怪
帮你格式化一下 -----BEGIN RSA PRIVATE KEY----- MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqxc7Qc1vV7TP5Z5rxmDt7Qmofu5ML6Ocg3RD2mrlrKmIF7X17QhrQZNk9bPi5aOrEnd2Yas0fOe1UMqizQknRwIDAQABAkBntr2FNjO4xzL/zvkmWLviZWhvCaXFezj1txUq4oI4F832rTp6g/RC/qNCaoyXG8pP1o6/Ex9uSd78RNcxyh4BAiEA6Goij3zW4CZmRC4cHJA3NkX/NGYSZEWh9Op3XG6etbcCIQC8c/knSl2TTzlA8L6MEiXSphxM+nNltBFkzm7H0jCa8QIgcN5SSGK1K4gadBP8fPagiY/2vyiu19llLL7NFqt2EgMCIE8V4FaTx8ddNOrC3URNDWBkY3YOmMTyl2YVl7n1xH4RAiEAlwhXLYqumZgDsEMzrupPvHR/mQ2AcslrwnEqlRCqvY8=-----END RSA PRIVATE KEY----- XPc8EmPRO66Nie5Y9VMooprl14gY/l5kVqMWIP8rJOjRHXCqaekPK9gKUlxrdxyscJLbmNgXYGr5m8v+PrpLig== {"flowRate":0.00,"usedRate":0.00,"status":0} 使用的我自己写的一套轮子 https://github.com/xiangyuecn/RSA-java https://github.com/xiangyuecn/RSA-csharp |
9
Jrue0011 2020-06-03 09:20:05 +08:00 1
搜了下网上 PHP 的 RSA 加解密,貌似都是用的 openssl_pkey_get_private,java 给的公钥私钥在 php 里应该要存储为 PKCS # 8 格式的文件,大概是这样
公钥文件: -----BEGIN PUBLIC KEY----- 公钥 base64 编码 -----END PUBLIC KEY----- 私钥文件: -----BEGIN PRIVATE KEY----- 私钥 base64 编码 -----END PRIVATE KEY----- 另外帖子里的私钥和加密内容转的字符串是 base64 编码吗,不清楚是不是 V2 把"+"和"/"转码了 |
10
neighbads 2020-06-03 09:21:56 +08:00 1
确实妖魔鬼怪。。。。。 实际是 base64 编码问题:
_ 换成 / - 缓存 + 然后数据就对了 |
11
object123 2020-06-03 09:42:08 +08:00 1
chunk_split("\n",$秘钥,64);每行 64 个字符分割换行
|
12
mandex 2020-06-03 09:51:19 +08:00 1
|
14
xiaooloong 2020-06-03 10:03:35 +08:00 1
@neighbads 估计是为了为了在 http 协议里传输,避免 base64 之后再进行一次 urlencode,直接把 base64 魔改了
|
15
fiypig 2020-06-03 10:09:08 +08:00 1
一般来说要加头部尾部的
也要确认是 pkcs8 还是 pkcs#1 -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- |