https://blog.csdn.net/weixin_39880318/article/details/112591766
前言
需要使用到sm2算法,但是客户只提供了sm2的java版本,网上也了解了一下这个算法,看的也是蒙的。也在github上找到了相关php实现sm2的代码,但是测试总是和客户发送的jar包对不上。想的是干脆直接调用客户发过来的jar算了。
思考
调用方式一般容易想到的就是两种:
直接使用php的exec或者其他能够调用shell命令的函数执行 java -jar jar包,这种需要将客户发送过来的jar进行一次封装。
把客户的demo,做成一个对外的接口,让php发送curl请求来调用。
因为搭建web站点,比较耗费服务器性能,并且只是为了这么一个小的调用,浪费精力搭建,维护,监控。实在是没有必要。
因此选择了第一种方式。如果需要第二种的可以自己去尝试。
安装包截图如下:c79b2c1da474668015dc3dd2a950ce37.png
都封装好了,只需要执行入口函数代码即可:a8c43ee6c3a3cd7a71672b27bc8bbace.png
就是这么一个入口的Java文件,需要做一次封装。
封装jar
走过的坑:
最开始我直接用idea打开入口文件,并添加引用,本来想直接运行但是好像连run按钮都没有出来,f1176479b57963c64280ef2fd68da316.png
不晓得是为啥。
于是新建了一个Java项目,把代码拷贝过来,报错了,提示xxx不存在,一看就是类库jar没有找到,于是
添加依赖库:选择客户给的demo里面所有的jar依赖。f01abff507377bac8fb53581475e1ba3.png
然后我们修改 代码把需要加密的内容通过命令行参数传进来,0624cabbc010b32001131ad2d7398838.png
打包
我们在菜单file–>project Structure中新建一个artifactsa4860d94b63d6899d770907455f9c5c5.png
配置如图:注意入口类的名称即可1d03d4179584425a0940cd9d3977c1f5.png
点击确定后:勾选2c8104f4f5251b62e33fe1cf3938501d.png
然后build288de10f259347a1c9374bc339e9386b.png
完成之后会出现:a19a8b24e93afe319a9436b71890f925.png
这时候我们来运行一下:
4ec643d5a4a870894889b7a912b446f8.png
php调用
05a4335d5794e650e6715d700d5c73e6.png
浏览器访问:2f9836a46537e9a7358094e4bb0872d5.png
一个最简单的demo就完成了