压缩两个文件具有相同的内容,但最终的md5sum是不同的

时间:2016-03-31 02:33:57

标签: macos zip md5

我的mac上有以下操作:

$ echo "dgrgrrgrgrg" > test1.txt

几秒钟后,复制test1.txt:

$ cp test1.txt test2.txt
$ ls -l
total 16
-rw-r--r--  1 hqfy  staff  12 Mar 31 10:18 test1.txt
-rw-r--r--  1 hqfy  staff  12 Mar 31 10:19 test2.txt

现在chech md5sum:

$ md5 *.txt
MD5 (test1.txt) = 8bab5a3e202c901499d83cb25d5a8c80
MD5 (test2.txt) = 8bab5a3e202c901499d83cb25d5a8c80
显而易见,test1.txt和test2.txt具有相同的md5sum,现在我将这两个文件压缩:

$ zip -X test1.zip test1.txt
    adding: test1.txt (deflated 8%)
$ zip -X test2.zip test2.txt
    adding: test2.txt (deflated 8%)
$ ls -l
total 32
-rw-r--r--  1 hqfy  staff   12 Mar 31 10:18 test1.txt
-rw-r--r--  1 hqfy  staff  127 Mar 31 10:22 test1.zip
-rw-r--r--  1 hqfy  staff   12 Mar 31 10:19 test2.txt
-rw-r--r--  1 hqfy  staff  127 Mar 31 10:23 test2.zip

test1.zip和test2.zip的大小是一样的,但是当我检查md5sum时:

$ md5 *.zip
MD5 (test1.zip) = af8783f96ce98aef717ecf6229ffb07e
MD5 (test2.zip) = 59e752a03a2930adbe7f30b9cbf14561

我用谷歌搜索了它,使用带有选项-X的zip,但它在我的情况下不起作用,我怎么能用相同的md5sum创建两个zip文件?

2 个答案:

答案 0 :(得分:0)

从此处的zip手册页引用..

  

使用-X,zip会删除所有旧字段,并且只包含Unicode和   Zip64额外字段(目前这两个额外字段不能   禁用)。

因此,在压缩时(即使使用<Style x:Key="AnswerRadioItem" TargetType="{x:Type ListBoxItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <RadioButton x:Name="rbAnswer" Content="{Binding Text}" IsChecked="{Binding IsSelected, RelativeSource {x:Static RelativeSource.TemplatedParent}}" /> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="AnswerRadioControl" TargetType="ContentControl"> <StackPanel> <ListBox x:Name="lstQuestionRadioItem" ItemContainerStyle="{StaticResource AnswerRadioItem}" ItemsSource="{Binding Answers}" SelectedItem="{Binding SelectedAnswer}"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> </StackPanel> </ControlTemplate> ),预计会有不同的md5sum。

答案 1 :(得分:0)

我知道这个问题很老了,但我可能会为您解答: .zip文件中包含两个文件的时间戳(明显不同)。这就是md5sum不同的原因。如果您能以某种方式删除这些时间戳,则md5sum将会是相同的。

还要注意,macOS将文件夹(__MACOSX)添加到包含额外元数据等的zip文件中。这可能也是问题所在。