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()方法内:
php 对接中行 国密加密解密 文档给的都是java的处理 用php怎么实现
运行结果:
php 对接中行 国密加密解密 文档给的都是java的处理 用php怎么实现
查了文档说需要给私钥转成16进制的 如果转成16进制就没法验签成功了。因为加密是中行那边操作。中行那边给了解密文档但是都是java的和php的操作不一样。
不知各位有什么建议或者有没有和中行那边对接国密的 PHP demo?

附:中行java解密流程链接:pan.baidu.com/s/1e1spddXTusWHzSEBY...

讨论数量: 15

看起来 公钥和私钥给的是asn1格式的,需要提取出来明文,用私钥明文解密。

4周前 评论
yinghuochong001 (楼主) 4周前
yinghuochong001 (楼主) 4周前
deatil (作者) 4周前
deatil (作者) 4周前
yinghuochong001 (楼主) 4周前

上一家公司,都是用java 搭建 解密服务 接口,省时省力,php再调接口 :speak_no_evil:

4周前 评论
yinghuochong001 (楼主) 4周前

以前做过EMS的对接,用的SM4,也是只有java的SDK,感觉主要问题一般都是在秘钥的转换,可以参考下

$key  = base64_decode($key);
$keyBytes  = unpack('C*', $key);
$key = pack('C*', ...$keyBytes);
4周前 评论
yinghuochong001 (楼主) 4周前

php 扩展 github.com/GmSSL/GmSSL-PHP

国密库 github.com/guanzhi/GmSSL

上面有编译说明, 可以试试看

4周前 评论
yinghuochong001 (楼主) 4周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!