md5加密演算法

2021-07-26 06:36:06 字數 2127 閱讀 3704

md5.h

#ifndef md5h

#define md5h

#include #include void rol(unsigned int &s, unsigned short cx); //32位數迴圈左移實現函式

void ltob(unsigned int &i); //b\l互轉,接受uint型別

unsigned int* md5(const char* mstr); //介面函式,並執行資料填充,計算md5時呼叫此函式

#endif

md5.cpp

#include "md5.h"

/*4組計算函式*/

inline unsigned int f(unsigned int x, unsigned int y, unsigned int z)

inline unsigned int g(unsigned int x, unsigned int y, unsigned int z)

inline unsigned int h(unsigned int x, unsigned int y, unsigned int z)

inline unsigned int i(unsigned int x, unsigned int y, unsigned int z)

/*4組計算函式結束*/

/*32位數迴圈左移實現函式*/

void rol(unsigned int &s, unsigned short cx)

/*b\l互轉,接收uint型別*/

void ltob(unsigned int &i)

return;}/*

md5迴圈計算函式,label=第幾輪迴圈(1<=label<=4),lgroup陣列=4個種子副本,m=資料(16組32位數指標)

種子陣列排列方式: --a--d--c--b--,即 lgroup[0]=a; lgroup[1]=d; lgroup[2]=c; lgroup[3]=b;

*/void accloop(unsigned short label, unsigned int *lgroup, void *m)

, ,

, };//迴圈左移-位數表

const unsigned short mn[4][16] = ,

, ,

};//資料座標表

const unsigned int *pm = static_cast(m);//轉換型別為32位的uint

tacc = ((label - 1) * 16) + 1; //根據第幾輪迴圈初始化t表累加器

clac clacarr[4] = ; //定義並初始化計算函式指標陣列

/*一輪迴圈開始(16組->16次)*/

for (short i = 0; i < 16; ++i)

return;

}/*介面函式,並執行資料填充*/

unsigned int* md5(const char* mstr)

; //種子副本陣列,並作為返回值返回

for (unsigned int bcount = 0; bcount < loopnumber; ++bcount) //分組大迴圈開始

/*資料相加作為下一輪的種子或者最終輸出*/

a = (lgroup[0] += a);

b = (lgroup[3] += b);

c = (lgroup[2] += c);

d = (lgroup[1] += d);

} /*轉換記憶體中的布局後才能正常顯示*/

ltob(lgroup[0]);

ltob(lgroup[1]);

ltob(lgroup[2]);

ltob(lgroup[3]);

delete md5buff; //清除記憶體並返回

return lgroup;

}

main.cpp

#include #include #include #include "md5.h"

int main(int argc, char **argv)

return 0; //在此下斷點才能看到輸出的值

}

MD5加密演算法

md5訊息摘要演算法 message digest algorithm 它對輸入的任意長度的訊息進行運算,產生乙個128位的訊息摘要。演算法原理 資料填充 填充訊息使其長度與448模512同餘 長度 448 mod 512 即時訊息長度本身已經滿足了上述長度要求也需要填充。填充方法 附乙個1在訊息後...

加密演算法 MD5

一 簡介 md5的全稱是message digest algorithm 5 資訊摘要演算法 在90年代初由mit laboratory for computer science和rsa data security inc的ronald l.rivest開發出來,經md2 md3和md4發展而來。訊...

MD5加密演算法

全稱 message digest algorithm 5 翻譯過來就是 資訊 摘要 演算法 5 md5訊息摘要演算法,屬hash演算法一類。md5演算法對輸入任意長度的訊息進行執行,產生乙個128位的訊息摘要。以下所描述的訊息長度 填充資料都以位 bit 為單位,位元組序為小端位元組。1.特點 1...