MD5常被用來作文件校驗,即咱們能夠根據MD5值是否匹配來判斷一個文件是否被篡改。
工具
但MD5值不是惟一的,不一樣文件可能會獲得相同的MD5,本文就使用fastcoll工具來作演示。命令行
咱們使用Wireshark的安裝文件Wireshark-win64-1.12.4.exe做爲示例文件:code
爲了不破壞原文件,拷貝一份副本ws.exe,後續的實驗使用ws.exe進行:
hash
fastcoll能夠在命令行中執行,這裏咱們直接將ws.exe拖拽到fastcoll程序圖標上執行,執行完畢後生成兩個新文件
it
這兩個文件的屬性分別爲:
ast
能夠看到兩個新生成文件的大小是一致的,但與原始文件稍有不一樣。
class
下面就來看看這幾個文件的MD5值:
file
C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\W ireshark-win64-1.12.4.exe MD5 MD5 哈希(文件 C:\littlemy\tools\Wireshark-win64-1.12.4.exe): f0 d3 d1 aa 6d 24 5e ab 05 2d 40 31 27 f6 8b b9 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s.exe MD5 MD5 哈希(文件 C:\littlemy\tools\ws.exe): f0 d3 d1 aa 6d 24 5e ab 05 2d 40 31 27 f6 8b b9 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s_msg1.exe MD5 MD5 哈希(文件 C:\littlemy\tools\ws_msg1.exe): c5 8e 2f ee 66 10 4e 11 54 5d f5 25 24 88 e5 71 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s_msg2.exe MD5 MD5 哈希(文件 C:\littlemy\tools\ws_msg2.exe): c5 8e 2f ee 66 10 4e 11 54 5d f5 25 24 88 e5 71 CertUtil: -hashfile 命令成功完成。
能夠看到兩個新生成文件的MD5值相同,但與原始文件的MD5值不一樣,那麼這兩個新生成文件會不會是同一個文件呢?程序
咱們再來看看這些文件的SHA1值:
im
C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\W ireshark-win64-1.12.4.exe SHA1 SHA1 哈希(文件 C:\littlemy\tools\Wireshark-win64-1.12.4.exe): 27 87 a4 d0 30 28 ee b7 15 00 30 35 13 60 24 2c dc 4e ab 52 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s.exe SHA1 SHA1 哈希(文件 C:\littlemy\tools\ws.exe): 27 87 a4 d0 30 28 ee b7 15 00 30 35 13 60 24 2c dc 4e ab 52 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s_msg1.exe SHA1 SHA1 哈希(文件 C:\littlemy\tools\ws_msg1.exe): e3 d1 52 02 4d ed ec 8a 54 c1 66 c1 8f 3c 1f 8a 6e b9 0a b8 CertUtil: -hashfile 命令成功完成。 C:\Users\xm\Desktop\fastcoll_v1.0.0.5.exe>CertUtil -hashfile C:\littlemy\tools\w s_msg2.exe SHA1 SHA1 哈希(文件 C:\littlemy\tools\ws_msg2.exe): 67 40 e8 ad 39 ca 55 b6 59 96 40 c8 06 05 6d 4f 78 6e f0 1e CertUtil: -hashfile 命令成功完成。
兩個新文件的MD5值雖然相同,但它們的SHA1值不一樣,且與原始文件的SHA1也不相同,所以不是同一個文件。
因此,使用MD5做爲單一校驗工具並非徹底可靠的。
PS. 新生成的文件能夠用來進行Wireshark的安裝。