我有一个名为 robot.ev3 的 ev3 文件,当我运行file
它时,我得到的输出是,我使用解robot.ev3: Zip archive data, at least v2.0 to extract
压缩文件,然后使用 压缩文件unzip robot.ev3 -d robot
robot
zip -r ../robotx.ev3 *
当我运行时,md5sum robot.ev3 robotx.ev3
得到的输出是:
31bf1fb8767707cd476c425ab7cf2a5a robot.ev3
7298c1ec0467672cf5e210f945261ae2 robotx.ev3
我尝试对我创建的文件而不是由创建的文件执行相同的过程,LEGO MINDSTORMS EV3 Home Edition
并且哈希值是相同的。
为什么 ev3 文件的哈希值不同?
答案1
因为 ZIP 文件包含文件名。因此,如果你更改压缩文件的名称,这会更改 ZIP 中的数据,从而更改 ZIP 文件的哈希值。
示例:创建示例文件
>>>echo "
>
> Because the ZIP file contains the file name. So if you change the name of the zipped files this changes the data in the ZIP, and therefore the hash of the ZIP file.
> " >data1.txt
复制文件,保留时间戳(对于 ZIP,仅计算修改时间)
>>>cp -p data1.txt data2.txt
检查我们是否有相同的文件
>>>ll data*.txt
-rw-r--r-- 1 me me 168 May 17 15:27 data1.txt
-rw-r--r-- 1 me me 168 May 17 15:27 data2.txt
>>>md5sum data*.txt
bf9c51a337186ff5c144177de7f84c00 data1.txt
bf9c51a337186ff5c144177de7f84c00 data2.txt
创建 ZIP
>>>zip data1.zip data1.txt
updating: data1.txt (deflated 34%)
>>>zip data2.zip data2.txt
updating: data2.txt (deflated 34%)
邮政编码不同
>>>md5sum data*.zip
50eb0d7a660833169b9856bd6eab5011 data1.zip
e16d9e4ae07aa521857552eaec6610b5 data2.zip
相反,将同一个文件压缩两次到两个不同的 ZIP 中会创建具有相同哈希值的相同 ZIP:
>>>zip data1B.zip data1.txt
updating: data1.txt (deflated 34%)
>>>md5sum data1*.zip
50eb0d7a660833169b9856bd6eab5011 data1B.zip
50eb0d7a660833169b9856bd6eab5011 data1.zip
要比较 ZIP 文件,最好先解压它们,除非你使用某些东西将它们作为设备安装。我以前花了一些时间比较 EAR 文件(EAR 文件是 WAR 文件 ZIP 文件,WAR 文件本身是 JAR 文件 ZIP 文件,JAR 文件本身是 .class java 文件 ZIP 文件)。