我有一个List<String>
,我希望显示该List<String>
内容的SHA-256,然后写入文件。然后我希望控制Java生成的SHA-256和Linux CLI sha256sum file.txt
生成的SHA-256。
我首先从List<String> list
的序列化开始:
byte[] bytes = org.apache.commons.lang3.SerializationUtils.serialize((Serializable) list);
以及产生执行SHA-256:
public static BiFunction<byte[], String, String> stringDigestFromBytes =
(h, t) -> Hex.encodeHexString(DigestUtils.getDigest(t).digest(h));
然后,在将list
写入文件之前,我生成Java SHA-256:
String hex256 = stringDigestFromBytes.apply(bytes, "SHA-256");
然后将list
写入文件:
Files.write(Path.of("file.txt"), list);
但是Java的SHA-256和Linux CLI sha256sum file.txt
生成的SHA-256并不匹配。有什么想法可以让两个SHA-256完全相同吗?
2条答案
按热度按时间50pmv0ei1#
如果您已经在使用Apache DigestUtils类,请用途:
bzzcjhmw2#
下面的代码生成的哈希值与
sha256sum
对包含相同字符串的文本文件所做的哈希值相同: