PHP对接中行国密解密的解决方案或者demo?-灵析社区

我头像最美

php 对接中行 国密加密解密 文档给的都是java的处理 用php怎么实现项目都是用php写的获取接口返回的加密数据后需要解密使用 自己只会用 php java 上面基本算是小白 看过有些大神用 php-java-bridge 此种方式这种方式做的跨语言解决。还需要写 java 代码封装 jar。这块因为不会 java 果断放弃了,如果有会 java 的可以查看 [https://blog.csdn.net/qq_34585882/article/details/79581982](https://link.segmentfault.com/?enc=Fa%2ByP1ZHYGPiiD4XR7isPw%3D%3D.IZNWhFkUv3V%2Bs18bs2dRUG3Zzy0crEUOM3TgRjK19Raqim0%2Bp4tBfGyO%2F7NReTUXARXUSkJ6tkRBnpLXPAZ9%2Bw%3D%3D) 好了还是说说 php 怎么实现吧,自己看了很多文档尝试用 用了这个人家写好的 php sm2sm3sm4 项目目录预览 - phpsm2sm3sm4 - GitCode 按照文档已经配置 composer require lpilp/guomi php7.4 已打开 gmp 组件支持 把中行给的返回加密数据和秘钥都直接传入到 $sm2->doDecrypt () 方法内: public function ceshi() { $sm2 = new RtSm2(); $publicKey = 'MFkwEwYHKoZIzj0CAQXXXXX1UBgi0DQgAEpg8H6Rou4UnDMGYs5qORGFkN6A4NlhIrk2AGWkTbS2B3QLKHMINDqhYAl024rzpTxaqbTq2w5sSFzgrEV28jkw=='; // 公钥 $privateKey = 'MIGTAgEAMBMGXXXXXXXAgEGCCqBHM9VAYItBHkwdwIBAQQgxWPNwsJu6Lq0xhPN2+2lVhyBir6BfJYXrR+MPpkwNhKgCgYIKoEcz1UBgi2hRANCAASmDwfpGi7hScMwZizmo5EYWQ3oDg2WEiuTYAZaRNtLYHdAsocwg0OqFgCXTbivOlPFqptOrbDmxIXOCsRXbyOT'; // 私钥 $skey = 'BONAPTWbfU7NhnRvZgJKT5YD9pHI+Z7MmGgBBAO/Thkp93AUGMGq6GcwoU2MPfq1JKDzbjNVTsrduV73er6dxXqgc0LWcphy4tYvVHsxM188XUHzRepYGfJwARCDDIT9WEY3royNIS/X8Wjwyn9um/ZS/DluFkL6vEakb+WLOz/H'; $str = $sm2->doDecrypt(bin2hex(base64_decode($skey)),$privateKey); } 运行报错 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240929/694e97f7839f2963b5f78e80ce7e0b12.png) 现在也不知道这个phpsm2是否能解决这个问题直接尝试就不成功 查了文档说需要给私钥转成 16 进制的 如果转成 16 进制就没法验签成功了 不知各位有什么建议或者有没有和中行那边对接国密的 PHPdemo? 附:中行 java 解密流程链接 [https://pan.baidu.com/s/191KI-6lvpvwzQHrjiImJGQ?pwd=q2km](https://link.segmentfault.com/?enc=a3BNnanz0aV0dQCI3ZACCg%3D%3D.NEAmqlvRxxNpB0fBJObSzP8K5e%2BTSiq4E8kLnKlTBWIZMjHlrf6wp7Hr%2FZeVGvtkOe5daKbKTdK0vASOkiLwAQ%3D%3D) 最后还是让行内技术人员弄的一个java的web应用我直接通过curl_init链接地址传参数就行了

阅读量:176

点赞量:0

问AI
我对接的招行使用的也是国密,PHP根本用不了,人家的demo都是java版本的,只能搞一个java服务,中间做一层中转