当前位置: 首页 > news >正文

动态类加载方式引入第三方资源jar包

一,背景说明

一般情况,引入第三方jar包的操作:
1,上传到公司私库;
2,pom引入坐标;

但是这次需要动态类加载方式使用jar包资源;
1,这是一个Saas系统,涉及到多租户,只有其中一个租户要求需要使用到这个资源,考虑环境隔离,资源安全性,由此使用动态类加载,毕竟这种方式用起来复杂且不便,不到特殊时候不需要使用,但还是记录一下使用方式;

二,使用方式

1,将jar包资源上传到服务器指定位置
此处我的位置

/opt/data/lib/bcprov-jdk15on-1.68.jar
/opt/data/lib/SM4Util-2.1.2-RELEASE.jar

2,使用

    public static String decryptData(String body, String secretKey, String iv) throws Exception {List<String> jarPath = new ArrayList<>();jarPath.add("/opt/data/lib/bcprov-jdk15on-1.68.jar");jarPath.add("/opt/data/lib/SM4Util-2.1.2-RELEASE.jar");CommonProInvoker commonProInvoker = new CommonProInvoker(jarPath);Class<?> loadClass = commonProInvoker.loadClass("com.security.demo.SM4Utils");Object sm4 = loadClass.getConstructor().newInstance();ReflectUtil.setFieldValue(sm4, "secretKey", secretKey);ReflectUtil.setFieldValue(sm4, "iv", iv);ReflectUtil.setFieldValue(sm4, "hexString", true);Method decryptDataCbc = commonProInvoker.getMethod("com.security.demo.SM4Utils", "decrypt01", String.class);String dataCbc = decryptDataCbc.invoke(sm4, body).toString();return dataCbc;}

当然,如果使用第一种方式代码就变得简单多了,

    public static String decryptData(String body, String secretKey, String iv) throws Exception {SM4Utils sm4 = new SM4Utils();sm4.SetSecretKey(secretKey);sm4.setHexString(true);sm4.setIv(iv);String data = sm4.decrypt01(body);return data ;}

三,总结

使用动态类加载方式是合理的,尤其是在以下场景:

1,加密库需要严格物理隔离。
2,系统需要支持多种加密算法的热插拔。
3,环境限制导致无法使用标准依赖管理工具。

但这种方式也带来了维护复杂度和性能开销,需要权衡利弊。在安全性要求不高的常规项目中,建议优先使用 Maven/Gradle 坐标依赖。

相关文章:

  • 转运机器人可以绕障吗?
  • 前苹果首席设计官回顾了其在苹果的设计生涯、公司文化、标志性产品的背后故事
  • dockerfile: PaddleOCR hubserving api 服务
  • 物联网驱动的共享充电站系统:智能充电的实现原理与技术解析!
  • 【NextPilot日志移植】日志写入流程
  • 智能SQL优化工具集成:从概念到实践
  • 二进制中1的个数
  • JWT的介绍与在Fastapi框架中的应用
  • OpenCV 的 CUDA 模块中用于将一个多通道 GpuMat 图像拆分成多个单通道图像的函数split()
  • OSI 7层模型
  • cURL:通过URL传输数据的命令行工具库介绍
  • 51单片机引脚功能概述
  • QT5.14安装以及新建基础项目
  • 保持Word中插入图片的清晰度
  • Linux文件编程——read函数与lseek函数
  • 关于读写锁的一些理解
  • 使用 Comparator 和 Comparable 对集合排序:如何轻松排序 Java 集合?
  • Edge Remover v18.7 绿色版:轻松卸载 Edge 浏览器,彻底清理残留数据
  • Electron学习大纲
  • linux-进程信号的产生
  • 《新时代的中国国家安全》白皮书(全文)
  • 淡马锡辟谣:淡马锡和太白投资未在中国销售任何投资产品或金融工具
  • 视觉周刊|纪念苏联伟大卫国战争胜利80周年
  • 哈尔滨工业大学原副校长王魁业逝世,享年92岁
  • 巴基斯坦称未违反停火协议
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往