PHP 接 Java 的加密接口,各位大佬帮忙看看这是怎么签名的

2019-08-16 09:07:30 +08:00
 sxfscool

明文是 hello world 的字符串,签名结果是

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

不同的原文得到的签名结果开始都一样( MIAGCS ),文档原文说的 是签名使用己方私钥以 PKCS7 签名格式(不包含原文)生成,签名算法为 SHA256withRSA, 将字节数 组进行 Base64 编码转换为文本 但是我用 openssl_sign 签名出的结果完全不一样,大佬们知道在 php 里怎么得到这种签名么?

1142 次点击
所在节点    问与答
2 条回复
mzeht
2019-08-16 10:47:34 +08:00
对方是他的私钥 rsa 加密然后 base64 你需要 base64 解开 然后用你的公钥去 check 挺常规的
jay4497
2019-08-16 11:04:36 +08:00
建议使用 phpseclib 这个库,PHP 自带的有些加密好像不是很通用。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/592345

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX