linux下的md5sum等命令以及文件的比較

Linux Flash Windows OpenSSL 隨員筆記 2017-04-05

在文件(動態庫、可執行程序等)分發時,有時候需要明確“那個文件是不是那個文件?”。因為文件可能有多個版本。windows下,動態庫和可執行文件可以添加版本標記;linux下,也可以用ident來查看一些信息。在現實中,因為版本而導致的問題絕非個例。

有時候,向他人確定一個文件的版本,windows下,有人會說版本時多少,比如2.0.0.1,但是,有人會告訴你,那個文件應該是多少大小!比如1K,或者1024字節,或者文件是哪年哪月的,請注意,這是不靠譜的!一般linux系統都會有摘要命令,用於輸出一個文件的摘要值比如md5sum。windows下缺乏這些工具,可以自己安裝個openssl來解決此問題。

前段時間作者就遇到了約500K字節錯一個bit的數據,該數據存放在flash中,估計是flash有問題(很難想象犯一個這樣的錯誤)。如何發現的呢?其實很簡單,對待檢測數據和正確數據分別做md5sum,他們的值不一樣,那麼可以確定這兩個數據不一樣。windows下用UtraEdit二進制打開,瞟一眼,那是一樣的。於是用命令行的fc命令,採用下面方式進行二進制比較: fc /b a.dat b.dat ,會顯示那些項目不一樣並給出偏移地址,然後用UtraEdit定位到不一樣的地方在仔細看。
順便提一下,編譯器編譯出的二進制文件情況會不一樣。以前做個實驗,源碼不動,linux下用gcc重新編譯,生成的二進制文件不變;而VC6生成的文件會有改變,經過比較,好像VC6會加入類似時間戳的字段。源碼改動後,生成的二進制文件大小不變是有可能的,切勿通過文件大小來確定文件版本

相關推薦

推薦中...