2014-03-29 144 views
0

我想知道是否有一種方法可以計算zip壓縮文件中包含的文件的MD5哈希值。計算壓縮zip文件中文件的MD5哈希

例如,我有一個zip文件,其中包含三個文件:Prizes.dat,Promotions.dat和OutOfDate.dat,我想計算三個文件的MD5以將其與給定字符串進行比較。由於我需要在非常大量的zip檔案上執行此操作,因此我想知道是否有辦法直接執行此操作而不解壓文件。

在此先感謝!

superPanda

回答

0

我認爲最簡單的辦法是計算一個壓縮文件的MD5哈希值,並將其存儲於zip存檔文件一起。如果你自己生成這些文件,你可以在壓縮之前對文件進行散列處理。如果您從其他地方接收到ZIP文件,請編寫一個腳本,以自動執行所有文件並添加哈希。然後,無論何時您需要檢查程序中的散列,您都可以從ZIP文件中提取預計算的散列。

+0

感謝您的快速回復!不幸的是,我收到了我的客戶的這些文件,我真的不知道他們是否知道什麼是MD5。那麼,我該怎麼做呢?也許我可以提取內存中的文件?謝謝! – superPanda

+0

是的,您可以在提交文件時提取文件,然後計算散列值。如果你直接接收它們(FTP,電子郵件等),那麼你可以寫一個腳本並手動運行它。如果你讓他們把文件上傳到服務器,你可以運行一個服務器端腳本來做到這一點。 – casperw

+0

好吧,因爲我有大量的zip檔案來測試,我可以爲每個zip文件寫一個For Each指令,解壓縮它,計算MD5哈希值,刪除臨時文件,然後傳遞給下一個? – superPanda

0

因爲這個需求而陷入困境,並發現了一種方法來檢查包含在tarball中的文件的散列而不將未壓縮的數據寫入磁盤(解壓縮)。 BSD例如低於因此md5

tar xOfz archive.tgz foo.txt | md5 
tar xOfj archive.bz2 foo.txt | md5 

或者使用tar xOfz archive.tgz foo.txt | md5sum

爲Linux。