近期完成了职业生涯的第一个需求,即现有系统的国密改造。
主要内容是更新原系统内的加密算法,将国际通用加密算法更改为国密加密算法:
主要涉及SM2,SM3,SM4。
SM2为非对称算法
SM4为对称算法
SM3为摘要算法
.
其中遇到的坑简单罗列如下:(以下问题只对应公司提供的加密软件包,不同工具或许情况不同)
1.国密软件包为C语言编写,每次加载需要提前加载包的路径,实现方式是spring扫包是调用初始化方法。
2.SM2每次调用需要初始化,单线程调用完毕需要释放资源。
3.SM4作为对称加密算法,其中输入可选拼接模式,下游采用nopadding,而输入数据要求是16字节的整数倍。
4.转码流程应与下游匹配,base64? HEX? getBytes("GBK")?
5.SM2 输入密文存在格式差异,现有C1||C2||C3与C1||C3||C2两种密文格式,如若格式错误不能成功解密。
后续有待补充~
.
望安望坦然。