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

在jar里限制指定的包名才可调用(白名单)。

1. 在jar包中定义一个接口,例如 用于检查传入的hash值是否匹配预设的值。
2. 在调用接口的地方,获取当前应用的hash值。
3. 将当前应用的hash值与预设的值进行比较,如果匹配,则允许调用接口;否则,拒绝调用。

一、调用者

public static Impl getInstance(Context context, ICallback iCallback){if (instance == null){if (checkHashForInstance(context)) {instance = new Impl();}} else {throw new SecurityException("validation failed during instance creation.");}}return instance;}
二、实现类
public class HashValidator {final static String whiltename ="com.xxx.xxxx";public static boolean checkHashForInstance(Context context) throws InsufficientPermissionException {// 获取当前应用的包名String packageName = context.getPackageName();// 计算包名的 HASH 值String calculatedHash = calculateHashFromPackageName(packageName);// 根据预设的 hash 值进行校验String presetHash = calculateHashFromPackageName(whiltename);Logs.d("package_name "+ packageName);if (!presetHash.equals(calculatedHash)) {// 校验失败,抛出自定义异常throw new InsufficientPermissionException("Insufficient permission during instance creation.");}// 校验成功return true;}private static String calculateHashFromPackageName(String packageName) {try {MessageDigest messageDigest = null;messageDigest = MessageDigest.getInstance("SHA-256");byte[] hashBytes = messageDigest.digest(packageName.getBytes());StringBuilder hexStringBuilder = new StringBuilder();// 将哈希字节数组转换为十六进制字符串for (byte hashByte : hashBytes) {hexStringBuilder.append(String.format("%02X", hashByte));}// 返回计算得到的哈希值return hexStringBuilder.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();// 在实际应用中可能需要处理 NoSuchAlgorithmException 异常return null;}}
}
http://www.lryc.cn/news/304937.html

相关文章:

  • python 提取PDF文字
  • 电气机械5G智能工厂数字孪生可视化平台,推进电气机械行业数字化转型
  • C# (WebApi)整合 Swagger
  • 导入excel某些数值是0
  • wo-gradient-card是一款采用uniapp实现的透明辉光动画卡片
  • Spark: a little summary
  • 018—pandas 生成笛卡尔积排列组合合并多列字符串数据
  • 【算法与数据结构】链表、哈希表、栈和队列、二叉树(笔记二)
  • bugku3
  • 相机的白平衡
  • 刷题日记-Day2- Leedcode-977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵 II-Python实现
  • Linux命令-chcon命令(修改对象(文件)的安全上下文)
  • 【漏洞复现】大华DSS视频管理系统信息泄露漏洞
  • websocket了解下
  • docker install private registry 【docker 安装 registry 仅证书认证】
  • JavaWeb——004Maven SpringBootWeb入门
  • 数据结构与算法-常用排序算法
  • 链表之“无头单向非循环链表”
  • 一休哥助手网页版如何使用
  • 个人博客系统测试
  • 智慧应急的未来:物联网技术引领智慧应急发展新趋势
  • 字符串摘要(C语言)
  • Linux进一步研究权限-----------ACL使用
  • 剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程
  • 【Linux进阶之路】Socket —— “UDP“ “TCP“
  • 一些用 GPT 翻译的计算机科学/人工智能 PDF 讲义
  • 重大更新:GPT-4 API 现全面向公众开放!
  • 【Python笔记-设计模式】对象池模式
  • 反序列化 [NPUCTF2020]ReadlezPHP1
  • AI技术那些事儿:揭开潜伏在你生活中的高科技小能手