我正在尝试生成文件,然后对它们的内容进行哈希处理,并将该哈希值附加在文件内容的末尾。对于我使用的是SHA-384,我的哈希函数代码粘贴在下面。问题在于生成正确的哈希字符串时不一致,因此哈希和文件内容最终对某些文件无效(不匹配),而对其他文件有效。有什么我可以解决的吗?我正在使用第三方应用程序读取和验证文件,因此很遗憾,我无法获得其解码功能。
public static String hash384(byte[] inputBytes) throws Exception{
try {
Runtime.getRuntime().gc();
String hash;
MessageDigest messageDigest = MessageDigest.getInstance("SHA-384");
messageDigest.update(inputBytes);
byte[] digestedBytes = messageDigest.digest();
hash = new String(digestedBytes, "windows-1251");
return hash;
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
答案 0 :(得分:1)
我建议使用Apache commons-codec
模块中的DigestUtils,以便实际上可以编写两行代码:
import static org.apache.commons.codec.digest.MessageDigestAlgorithms.SHA_384;
...
// digest
byte[] digest = new DigestUtils(SHA_384).digest(new File(<file path>));
// hex digest
String hdigest = new DigestUtils(SHA_384).digestAsHex(new File(<file path>));