实现对国密SDK的封装,遇到的一些问题。
1,封装sdk包,使用maven的maven-assembly-plugin插件,实现结构定制化打包。具体配置文件如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xhs</mainClass> <!--执行main方法-->
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef><!--打包的文件名-->
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase><!-- 绑定到package生命周期阶段上 -->
<goals>
<goal>single</goal><!--执行一次-->
</goals>
</execution>
</executions>
</plugin>
2,打包后,运行时遇到了BC问题:
在网上找了一些方法:
原因是缺少依赖,将bcprov-jdk15to18-1.68.jar这个包放在JDK的/jre/lib/ext这个目录下,这样放是可以解决的BC问题的,但是还有个问题需要解决,就是打包的路径需要改变(为了解决在引用SDK包时,避免和其他版本的bcprov-jdk15to18-1.68.jar这个包冲突),于是乎找到了解决jar包冲突的解决方案:https://blog.csdn.net/hff133133/article/details/126946153
但还是出现了BC问题。
3,最终解决方案如下:
把bcprov-jdk15to18-1.68.jar的源码拿了出来,自己写了一套加解密流程,最终解决了BC问题。