1. 32、64位系統生成的MD5編碼一樣嗎
不一樣 ,也可以一樣 取決於你的程序設計是不是完美的。
就是在用64位的編譯器的時候。把頭文件裡面的LONG型改成int型。然後重新編譯後。md5加密出來的結果。就和32位編譯器編譯後的處理結果一致了。。
這個問題終於解決了。
可能原理是:
64位的int 和 32位的long一樣長,
64位的long就更加長了。
最好是定義成 int32_t 型,這樣不管是在什麼平台上,在32位還是64位機上,都能得到正確的結果。
一般情況下是這樣的:
32位系統上,sizeof(int) == sizeof(long) == 4, sizeof(long long) == 2 * sizeof(int);
64位系統上,sizeof(int) == 4, sizeof(long) == sizeof(long long) == 2 * sizeof(int);
2. 為什麼同樣的文件我拷過來後MD5碼驗證就不對
如果文件沒變,你採用的MD5驗證程序又一樣的話,碼應該一樣的。但你的Md5碼改變的話,那肯定說明文件有修改。你說文件沒有被修改,大小仍然不變,這應該不可能,我也不明白怎麼回事,可能是與你的硬碟分區有關?
3. 為什麼每次編譯之後計算MD5都不相同
建議你學習一下PE文件(通常的exe可執行文件就是一種PE文件)結構 其中由一個時間日期段 記錄了PE文件被創建的時間 每一次編譯的時間不同 因此此段的內容也不同 因此最終生成的文件內容有差異 繼而md5碼有異 附: PE部分結構C語言描述: typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp;//這里就是時間日期戳了 是鏈接器產生的時間 DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 下圖在一個具體的可知性文件中標示了此段的位置:
4. 編譯的LEDE固件的內核MD5碼不一樣怎麼辦
就算源碼一樣 .config文件和官方編譯用的不同,md5還是不同,雖然可以強制指定,但上次試過安裝官方源上的一些內核模塊,雖然可以安裝,但內核日誌中有出錯的trace,放棄
5. ubuntu下鏈接c語言實現md5出錯
你的命令寫得有問題:
gcc -o main.o md5.o
-o參數用來指定輸出文件名,你這里把main.o傳給它了,試試:
gcc -o app main.o md5.o
其實你可以直接一步完成:
gcc md5.c main.c -o main
6. 為什麼一個文件用MD5算出來的MD5碼每次都不一樣
可能是文件問題,文件不斷在更新。
MD5計算器問題,推薦用winMd5Sum和
HashMyFiles。
7. 文件MD5不一致是什麼意思
兩個文件的MD5值不同說明將文件不是相同文件,一般用來檢測文件是否被篡改,或下載的文件是否與原文件是同一文件