php 对接中行 国密加密解密 文档给的都是java的处理 用php怎么实现
自己只会用php java上面基本算是小白 看过有些大神用php-java-bridge此种方式这种方式做的跨语言解决。还需要写java代码封装jar。这块因为不会java果断放弃了,如果有会java的可以查看 blog.csdn.net/qq_34585882/article/...
好了还是说说php怎么实现吧,自己看了很多文档尝试用
用了这个人家写好的php sm2sm3sm4
项目目录预览 - phpsm2sm3sm4 - GitCode
按照文档已经配置composer require lpilp/guomi php7.4 已打开gmp组件支持
把中行给的返回加密数据和秘钥都直接传入到$sm2->doDecrypt()方法内:
运行结果:
查了文档说需要给私钥转成16进制的 如果转成16进制就没法验签成功了。因为加密是中行那边操作。中行那边给了解密文档但是都是java的和php的操作不一样。
不知各位有什么建议或者有没有和中行那边对接国密的 PHP demo?
附:中行java解密流程链接:pan.baidu.com/s/1e1spddXTusWHzSEBY...
看起来 公钥和私钥给的是asn1格式的,需要提取出来明文,用私钥明文解密。
参考一下:
问答:php 与java对接国密sm2遇到的一些问题(招商银行接口)
博客:php国密SM3签名算法
分享:求推荐:用php/openssl实现 国密SM4的库。
上一家公司,都是用
java
搭建 解密服务 接口,省时省力,php
再调接口 :speak_no_evil:以前做过EMS的对接,用的SM4,也是只有java的SDK,感觉主要问题一般都是在秘钥的转换,可以参考下
php 扩展 github.com/GmSSL/GmSSL-PHP
国密库 github.com/guanzhi/GmSSL
上面有编译说明, 可以试试看