以下代码为两个字符串生成确定性(shasum 相同)的文件。
try(
FileOutputStream fos = new FileOutputStream(saveLocation);
GZIPOutputStream zip = new GZIPOutputStream(fos, GZIP_BUFFER_SIZE);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(zip, StandardCharsets.UTF_8));
){
writer.append(str);
}
生产:
a.gz f0200d53f7f9b35647b5dece0146d72cd1c17949
但是,如果我在命令行上获取文件并重新压缩它,它会产生不同的结果
> gunzip -n a.gz ;gzip -n a ; shasum a.gz
50f478a9ceb292a2d14f1460d7c584b7a856e4d9 a.gz
如何使用 /usr/bin/gzip 和 gunzip 使其与原始 sha 匹配?