gpt4 book ai didi

java - 有没有办法从 Maven 构建中获得一致的 MD5 哈希?

转载 作者:行者123 更新时间:2023-12-02 17:34:24 27 4
gpt4 key购买 nike

我可以在一组 jar/war 文件上连续运行相同的 maven 构建 5 次,而无需对它们中的任何一个进行任何更改,但我每次都会在每个 jar/war 文件上获得不同的 MD5 哈希值.我希望 java 编译器每次都产生相同的散列。是否有任何文件会影响我可以排除的哈希值,以便每次都给我相同的哈希值?或者只是编译器每次都没有以相同的方式编译相同的代码?

使用以下代码生成哈希:

public static String getHash(File file) throws FileNotFoundException, IOException {
if(file == null || !file.isFile()) {
return "";
}
FileInputStream in = null;
try {
in = new FileInputStream(file);
byte [] bytes = toByteArray(in);
return getHash(bytes);
} catch(Exception e) {
Logging.log("Unable to get MD5 hash for file: " + ile.getName());
} finally {
StreamUtils.close(in);
}
return "";
}

public static String getHash(byte[] bytes) {
MessageDigest digest = getMessageDigest();
byte[] hash = digest.digest(bytes);
StringBuilder builder = new StringBuilder();
for (int val : hash) {
builder.append(Integer.toHexString(val & 0xff));
}
return builder.toString();
}

private static MessageDigest getMessageDigest() {
try {
return MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}

最佳答案

jar 或 war 文件是一个 zip 文件。一个 zip 文件包含 zip 条目。 zip 条目包含有关文件的元数据,例如文件的创建和修改时间。

您应该将生成的 jar/war 文件的每个文件的内容传递给您的散列,始终以相同的顺序。

关于java - 有没有办法从 Maven 构建中获得一致的 MD5 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com