C 計算MD5結果不一致

2021-09-22 12:38:19 字數 515 閱讀 9650

c#字串計算md5演算法:

/// /// 計算md5

///

/// 明文

/// 密文

public static string ge***5(string strdatain)

return strtemp.tolower();

}

正式發布使用這個md5發現計算結果不一致,同事用我release編譯的版本和正式庫發布版本計算結果不一樣,很詭異,因為輸入的字串和演算法都是一樣的。開始處理這個問題,log記錄關鍵數值,修改字串編碼也沒有用!也在網上看了好多文章,找了好多資料,最後任務管理器看到正式庫發布版本是32位執行程式,我就覺得是這個問題了!結果我把正式庫發布版本修改為64位,計算結果就沒問題了!

我記錄log發現問題就出在於下面這句**:

bythash = md5.computehash(bytvalue);
32位程式和64位程式計算出來的md5值是不一樣的,太坑了。。

快取不一致

當程式在執行過程中,會將運算需要的資料從主存複製乙份到cpu的快取記憶體當中,那麼cpu進行計算時就可以直接從它的快取記憶體讀取資料和向其中寫入資料,當運算結束之後,再將快取記憶體中的資料重新整理到主存當中。舉個簡單的例子 i i 1。當執行緒執行這個語句時,會先從主存當中讀取i的值,然後複製乙份到...

vc6 debug release 結果不一致問題

網上找了些資料,但未能解決我的問題 i.記憶體分配問題 1.變數未初始化。為debug中會自動給變數初始化found false,而在release版中 則不會。所以盡可能的給變數 類或結構初始化。2.資料溢位的問題 如 char buffer 10 int counter lstrcpy buff...

version magic 不一致問題

碰到乙個問題,在開發過程中發現以前編譯的模組載入失敗了。wlan version magic 4.1.15 gfb2dbf6 smp preempt mod unload armv7 p2v8 should be 4.1.15 ge5de83b dirty smp preempt mod unloa...