java版本差异导致SecretKeySpec解密解密失败
https://blog.csdn.net/weixin_43717407/article/details/119011685
项目场景:
新上线一个功能,其中需要在某模块对请求中的某个加密数据进行解码,
需要借助javajdk的javax.crypto包下的加密工具进行解密。
但是进行线上完整请求测试时,却发现相关加密数据无法正常入库,数据链路存在问题。
修改相关模块日志等级,拉取完整请求各个负责模块的相关日志,监控是否有接收到相关数据信息;
原因分析:
经过观察分析,发现这是解密的密钥key有问题。网上检索相关异常后发现问题产生原因:
对比本机jdk与线上环境jdk版本,发现均为jdk1.8版本。为什么本机就可以正常解码,而线上的jdk1.8就不行呢?
解决方案:
经过长时间检索原因,查询网上博客、官方文档,最后终于找到以下几种解决方法:
下载 JCE无限制权限策略文件,替换%JAVA_HOME%/jre/lib/security下的local_policy.jar 和 US_export_policy.jar;
1.6版本
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
敲定具体解决方案:
经过与同事间的讨论,最终敲定方案三。理由如下:
方案一:对原生jdk直接进行修改,对线上java程序而言,风险性过大。op方也很难同意这种要求。
方案二:第三方包的引入风险同样很大,无法确定第三方包本身的安全性、可靠性。
方案三:jdk版本的升级,而且是小版本的升级,是大家都比较能接受的,对企业安全也没有造成其他威胁性。
————————————————
版权声明:本文为CSDN博主「2年半个人练习生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43717407/article/details/119011685
更多推荐
所有评论(0)