![如何在 Linux 和 Windows 中实现相同的压缩](https://linux22.com/image/1460708/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E5%92%8C%20Windows%20%E4%B8%AD%E5%AE%9E%E7%8E%B0%E7%9B%B8%E5%90%8C%E7%9A%84%E5%8E%8B%E7%BC%A9.png)
我有一个 example.jar 文件。我正在尝试更新 jar 中的类文件。当我使用 jar 或 zip 实用程序打包类文件时(命令行-linux)
我试过 :
jar uf 我的 MyJarFile.jar MyclassFile.class
zip -u 我的 MyJarFile.jar MyclassFile.class
我得到一些校验和假设 XXYYZZ。
但是当我使用 Windows 打包同一个类文件时7zip(图形用户界面)我得到了不同的校验和,比如 MMNNOO。这是因为压缩率发生了变化。我的意思是大小也不同。
现在我的问题是如何才能实现相同的压缩比即相同的校验和。
编辑1: 我已经在两个平台上尝试过 jar。两者都产生了不同的 cksum... :(
答案1
校验和是文件中包含的所有位的哈希值。
Windows 和 Linux/UNIX 使用不同的文件结尾,因此使用相同工具在每个操作系统上创建校验和总是会产生不同的校验和,除非您特别更改行结尾。
要检查是否具有相同的压缩率,请查看文件大小。
可能会有轻微差异,但差异应该很小。
校验和的目的不在于检查在不同时间或不同地点创建的两个文件是否相同,而在于检查是否有人或某物更改了文件。
如果我要向您发送一个 zip 文件,我可以对其进行校验,然后通过电子邮件向您发送该 zip 文件和我创建的校验和。
您收到了 zip 文件,请再次对其进行校验,如果校验和匹配,则表明文件自我发送以来没有发生更改。
编辑-我假设这个答案是 JAR 是在 Linux 上编译和压缩的,也是在 Windows 上编译和压缩的