md5簡介: md5的全稱是message-digest algorithm 5,在90年代初由mit的電腦科學實驗室和rsa data security inc發明,經md2、md3和md4發展而來。md5將任意長度的「位元組串」變換成乙個128bit的大整數,並且它是乙個不可逆的字串變換演算法。換句話說就是,即使你看到源程式和演算法描述,也無法將乙個md5的值變換回原始的字串,從數學原理上說,是因為原始的字串有無窮多個,這有點象不存在反函式的數學函式。
md5演算法:第一步:增加填充 增加padding使得資料長度(bit為單位)模512為448。如果資料長度正好是模512為448,增加512個填充bit,也就是說填充的個數為1-512。第乙個bit為1,其餘全部為0。第二步:補足長度 將資料長度轉換為64bit的數值,如果長度超過64bit所能表示的資料長度的範圍,值保留最後64bit,增加到前面填充的資料後面,使得最後的資料為512bit的整數倍。也就是32bit的16倍的整數倍。在rfc1321中,32bit稱為乙個word。第三步:初始化變數:用到4個變數,分別為a、b、c、d,均為32bit長。初始化為:a: 01 23 45 67b: 89 ab cd efc: fe dc ba 98d: 76 54 32 10第四步:資料處理:首先定義4個輔助函式:f(x,y,z) = xy v not(x) zg(x,y,z) = xz v y not(z)h(x,y,z) = x xor y xor zi(x,y,z) = y xor (x v not(z))其中:xy表示按位與,x v y表示按位或,not(x)表示按位取反。xor表示按位異或。函式中的x、y、z均為32bit。定義乙個需要用到的陣列:t(i),i取值1-64,t(i)等於abs(sin(i))的4294967296倍的整數部分,i為弧度。假設前三步處理後的資料長度為32*16*nbit第五步:輸出:最後得到的abcd為輸出結果,共128bit。a為低位,d為高位。
md5在asp.net(c#)中的實現:c#**
//欲進行md5加密的字串
string test = "123abc";
//獲取加密服務
system.security.cryptography.md5cryptoserviceprovider md5csp = new system.security.cryptography.md5cryptoserviceprovider();
//獲取要加密的字段,並轉化為byte陣列
byte testencrypt = system.text.encoding.unicode.getbytes(test);
//加密byte陣列
byte resultencrypt = md5csp.computehash(testencrypt);
//將加密後的陣列轉化為字段(普通加密)
string testresult = system.text.encoding.unicode.getstring(resultencrypt);
//作為密碼方式加密
string encrypt pwd = system.web.security.formsauthentication.hashpasswordforstoringinconfigfile(test, "md5");
//只需最後一段語句即可進行md5加密,無需引入任何包.
LoadRunner呼叫md5方法
檢視 958 評分 0 0 有個專案的請求引數中,有乙個引數需要md5加密。在google搜尋了些lr呼叫md5方法的資料。參考資料實現了引數md5加密。現將方法做下總結 1.首先將md5演算法在c編譯器中生成md5.件,在vuser generator中新增這個md5.件,然後再global.h中...
linux下 C 最簡單獲取MD5方法
在網上蒐集了好幾個c 的md5演算法源 除錯通過後計算出的值看起來是md5,實際卻不是,產生了部分偏移。做c 程式用這些 的話,肯定無法達到使用md5驗證的目的。爾後發現 linux shell 有直接的命令 可以 獲取 字串 檔案的md5,就通過使用 popen進行互動獲取md5值,如下 理論上,...
android 呼叫MD5演算法
public static string getstringmd5 string sourcestr string s null try messagedigest md messagedigest.getinstance md5 這兩行 的作用是 將bytes陣列轉換為biginterger型別。...