Java的私钥怎么才能转成php可读的私钥?

对接中信银行支付,他们是 Java 的架包,私钥是.key 文件 A1 开头的加密字符串,无论怎么转 openssl_pkey_get_private 都无法识别,大神求助!!

     $content = file_get_contents('/cert/key.key');
     $decodedPrivateKey = base64_decode($content);
     $pemPrivateKey = "-----BEGIN PRIVATE KEY-----\n" . chunk_split(base64_encode($decodedPrivateKey), 64, "\n")  . "-----END PRIVATE KEY-----";

     var_dump(openssl_pkey_get_private($pemPrivateKey,'password'));
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

命令行:openssl pkcs8 -inform DER -in /cert/key.key -out key.pem -nocrypt

在 php 里面加载:
$privateKey = file_get_contents(‘key.pem’);
$res = openssl_pkey_get_private($privateKey);
if (!$res) {
die (“私钥解析失败”);
}

1个月前 评论
luyang (楼主) 1个月前
讨论数量: 8

命令行:openssl pkcs8 -inform DER -in /cert/key.key -out key.pem -nocrypt

在 php 里面加载:
$privateKey = file_get_contents(‘key.pem’);
$res = openssl_pkey_get_private($privateKey);
if (!$res) {
die (“私钥解析失败”);
}

1个月前 评论
luyang (楼主) 1个月前

用 Java 重新写个单独的接口处理这个业务

1个月前 评论

可以给一个测试的秘钥看下。

php 非对称加密的推荐用这个库 phpseclib/phpseclib

1个月前 评论

A1JTQVDjl+Hb5rsllFq0FolON+DKQPzHYOB8ojFqB57ACXpFbWWvl2IwYivxTqCkI3aOn53GdZ7vjjNHWoObVHWvWHpcUazlqpsjjSp2q86Z3my9Dqu4WbKCSF1XKCE9JydLZ/i/In3klzrs7QR88k2CKRVwRDdcUG2gu1godkB/L6drqJVbfaAaNBzS+wJghmSFgstsR2wm4vxY4ZQlQdE5iMNpxKQjaX36sXhwpZECMOG1cx/8CpTl2nAoWeWMeUIBum5KO2l3OEJV5SL9NCAdbL7Ded0CmnZN9q9056t8L+fepndE4gNAbWOvAgeoemJEz5mH/thLDcXA4/PPgw0F/7f++4Z6kKiMEGZoyQaUdeIKzf8UTB6relbNZK4DLcZxd3WTC0i2fBa/T+mUuBeBCWFhHBPPRK+nunIPSno5Aw5wHCGvaUtbWS2od792vEXUwWWdPm4ZEBbubrlLnqLV3EBIREM9qCDBpxi7xVhu/4W4E62Relavn15v5EJqF2g+3f58nLOjnZaJecPiGLAahkGQzHUQ7AzA9ZY6wkRQq0UF759MRcr5fIRKAnTLpjYBOWweepcnVBoiAaBqLOOV8e5WN8fqRILvTRfYQBXvT4i3jdQZA9iFH3aN3uNAtRh/Wnc8Jb/aTMpTBAQGdMHLPIZQMCF7pA4lEpyRjlDJ7FsWU7BQtA/dPs+mx8VTr7GpSVyfT0UFBIjd/oJoupCVkK7Ls4x9bytVR9LpTOsmvwfTpnSOFksaWyyRuRJUNnAK32Vyr5iUEYWZ5tNMyi253oLmpZKpNiq5Z4oZOFcpG5HJmNsaX6X4Vxd6VSUKyVSggqlgHRMnb0l2EZLY0PfRFeQL6+WY91DkcRHSqMoQJ0IzmcG96raSOki33qy4vy2D7++q8ppUtgkwzH7l0B+EN4QgtEV0dK9OhizPW/Xjh0ytF76+vdsMhZ+MIZymyQk8hkl75tZia+GJgBTF9WtenCruDORQUcbdC4GKbsWKkHvn72uWXOvZSmptOuXmbS2RbD+NmJNA0vr41BF+UFapFp+EZU5VWorpqizB6neXhdL8aPyZA7EWVPX6DIU7iGtBgTi5qCmptk/SqOXiC1BonkLd64it6E7BZv30z8RxUY2Pxou2ZuqtkCSzrqRv3iQiYY+EKDw0Fek5gX8onVMwPRJs2sNnCa1u8Hp2oJ9ATl+OZh3kklRHoOsEQdccvhqb+RrIkqVz+Ml1xc3udunUuS48NXEArDEX8eIcMJ3wwjU17asHr59pVfC4HP3fagRy4Xnn1u00FQ7PyFd1hiSwxl8s5K7xtb0ZYCtI7PlI+CFB/GChTZ22wZ3JOBpqpbAB2i0npYmoCKv83bPxdFNu8BpGkXUgVSXboqlXLbbKshBlvixO2LiSEBbY5+vuWOZfJrCe/VQUh4nqjsUuF0TgGiPdG13BBVxpBDLgItIuwSMj4/pOkE0u7HcB/VtDIPD+j+Hx2X865O8a4wdwbCfhiu8QjDNll8Qths0ZPBIlZxnAXO0sWAm/1yYrA6dBH3vZztg8Rkab9n8Z+sxkTQAJeGm7SEsNDf3Hq+lzBHJK4qEWvCATCBIRFpsXzZWJVjVTe17TLoN49z+y1+COJQLByCHKIoXRtjawhr0xMOCBYPGKo5b3C5IAkG8=

1个月前 评论
deatil 1个月前

用 javabrige 直接调用 java 函数加解密,我是这么处理的,同中信银行支付,哈哈

1个月前 评论

终于可以了,中信银行生成的密钥中有个.pfx 文件,然后

openssl pkcs12 -in PTNRtest.pfx -nocerts -out PTNRtest.key
openssl pkcs12 -in PTNRtest.pfx -clcerts -nokeys -out PTNRtest.cer

就能得到我想要的加密的私钥和解密的公钥,后面就可以正确的读取到资源

1个月前 评论