首页 > 编程语言 >Java 如何计算jar包的HASH哈希值

Java 如何计算jar包的HASH哈希值

时间:2024-09-17 19:23:53浏览次数:3  
标签:HASH String java JAR jar 哈希 import digest

在做授权系统的时候用到了一个小功能发出来分享一下。

全部代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Main {

    public static void main(String[] args) {
        try {
            // 获取当前运行的 JAR 文件
            File jarFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI());

            // 计算 JAR 文件的哈希值(如 SHA-256)
            String hash = calculateJarHash(jarFile, "SHA-256");

            // 打印哈希值
            System.out.println("JAR 文件的 SHA-256 哈希值: " + hash);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String calculateJarHash(File jarFile, String algorithm) {
        try {
            MessageDigest digest = MessageDigest.getInstance(algorithm);

            // 读取 JAR 文件并更新哈希计算
            try (InputStream is = new FileInputStream(jarFile)) {
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = is.read(buffer)) != -1) {
                    digest.update(buffer, 0, bytesRead);
                }
            }

            // 将哈希值转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest.digest()) {
                hexString.append(String.format("%02x", b));
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException | java.io.IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

本文由博客一文多发平台 OpenWrite 发布!

标签:HASH,String,java,JAR,jar,哈希,import,digest
From: https://blog.51cto.com/u_14845233/12038073

相关文章

  • 如何使用Maven将项目中的依赖打进jar包
    需求有时候写一些库,需要其它三方依赖,但是又不想这个依赖影响到使用方,可以将这些三方依赖打到自己的项目jar包,并且更换包名,避免冲突(更换包名之后,项目中的类引用第三方依赖的类import语句也会跟着变化)。如Mybatis就使用了Ognl库,在打包时把Ognl的所有类都打到了Mybatis自己的jar中......
  • Vite打包zip并改名为md5sum哈希案例
    通常在DevOpsCICD流水线部署前端项目时,一般默认都要将dist资源打包为zip,并且把zip名称改为md5sum哈希值(用于文件完整性验证)。md5sum是什么?md5sum 是一个在Unix和类Unix系统(如Linux)中广泛使用的命令行工具,它主要用于计算和验证文件的MD5哈希值。MD5(Message-DigestAlg......
  • JAVA-IO获取resource WEB-INF 中文件 JAR包中
    getResource+getPath()classPaththis.getClass().getClassLoader().getResource(StringUtils.EMPTY).getPath()Stringpath=this.getClass().getClassLoader().getResource(fileName).getPath();StringfilePath=URLDecoder.decode(path,StandardCharsets.UTF_8);......
  • HashSet&HashMap
    一.哈希......
  • 论哈希是什么
             ......
  • 代码随想录算法训练营Day5 | 哈希表理论基础、242.有效的字母异位词、349.两个数组的
    哈希表理论基础哈希表哈希表是根据关键码的值而直接进行访问的数据结构。数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:哈希表一般用来快速判断一个元素是否出现集合里。哈希函数哈希函数通过特定编码方式,可以将其......
  • 哈希hash
    hash其实就是把一个字符串或数字映射成一个值域范围更小的数字,很简单对吧那末总么实现呢?D板子:https://www.luogu.com.cn/problem/P3370我们首先固定一个base,然后要把字符串转化成base进制的数(base要包含值域且通常为大质数),并用unsignedlonglong存(相当于对\(2^{64}\)取模)。(......
  • 记一次nginx布署spring cloud项目后,jar包运行正常,但访问静态资源报404的问题。
    1、我们知道springcloud,是通过注册中心来注册所有的应用,这里面也包括网关gateway的注册:2、这里面我们运行了consoleapplication应用,这样里面就有一个Instance。3、测试静态资源的访问:4、consoleapplication结构:5、访问单个模块里的资源是正常的,但是上了服务器,nginx布......
  • 字符串哈希&线段树维护字符串哈希
    本文哈希数组均为1-index,原始字符串均为0-index。哈希值类typedefunsignedlonglongull;ullbs=13131,bspw[MAXN];inlinevoidinit_bspw(){bspw[0]=1;for(inti=1;i<MAXN;i++)bspw[i]=bspw[i-1]*bs;}structHashNode{ullval;intlen;......
  • 直接编辑jar包的IDEA插件 JarEditor
    JarEditor:是一款不需要解压就可以直接编辑jar包的IDEA插件,使得jar包文件的编辑变得便捷和高效。一、功能特点无需解压即可直接编辑JAR包内的class文件和资源文件在JAR包内可以添加、删除、重命名文件或目录可以搜索JAR包内的内容可以将文件或目录复制到剪......