【发布时间】:2019-12-14 23:50:58
【问题描述】:
我从未真正研究过它,但现在我意识到我无法轻松构建两个相同的 .jar 文件。
我的意思是,如果我构建两次,而不做任何更改,我会得到完全相同的大小,但 .jar 的校验和不同。
所以我快速运行了一些测试(基本上是 unzipping,sort -n -k 5'ing 然后 diff'ing)看看.jar 内部的所有文件都是相同的,但 .jar 是不同的。
所以我用一个普通的 .zip 文件做了一个测试,发现了这个:
... $ zip 1.zip a.txt
... $ zip 2.zip a.txt
... $ ls -l ?.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 1.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 2.zip
(完全相同的 .zip 文件大小)
... $ sha1sum ?.zip
db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf 1.zip
eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91 2.zip
(不同的 SHA-1 和,让我们看看为什么)
$ hexdump 1.zip -C > 1.txt
$ hexdump 2.zip -C > 2.txt
$ diff 1.txt 2.txt
3c3
< 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*4e*d5 46 4c |txtUT.....FLN.FL|
---
> 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*5d*d5 46 4c |txtUT.....FL].FL|
解压缩两个 zip 文件肯定会返回我们独特的文件。
问题:为什么会这样? (我会自己回答)
【问题讨论】:
-
既然已经知道答案,为什么还要问?
-
@Gumbo:我在输入问题时找到了答案(为什么 SO 允许一个人回答他自己的问题?:) 并发现这个问题可能会引起其他人的兴趣(这两个人赞成十个意见似乎表明:)
-
@Gumbo,偶尔会用“回答你自己的问题”来快速获得更多声望。