md5演算法簡單實現

2021-06-26 10:27:38 字數 2390 閱讀 4036

md5演算法步驟詳解

md5演算法的c++實現

看完網上文件後,主要的問題是,對於輸入的資訊你要怎麼進行補位這些操作啊?因為自己是渣渣,而且又沒有深究,所以就姑且用vector來實現了,**也不夠優,

還是有機會就再來優化吧!

直接上**:

標頭檔案 :mymd5.h

#ifndef mymd5_h

#define mymd5_h

#include #include typedef unsigned char byte;

typedef unsigned long ulong;

using std::string;

using std::vector;

class md5

;#endif

實現:mymd5.cpp

#include "mymd5.h"

#include using namespace std;

/********* f, g, h and i are basic md5 non-linear functions. *********/

#define f(x, y, z) (((x) & (y)) | ((~x) & (z)))

#define g(x, y, z) (((x) & (z)) | ((y) & (~z)))

#define h(x, y, z) ((x) ^ (y) ^ (z))

#define i(x, y, z) ((y) ^ ((x) | (~z)))

/********* rotate_left rotates x left n bits. *********/

#define rotate_left(x, n) (((x) << (n)) | ((x) >> (32-(n))))

/********* ff, gg, hh, and ii transformations for rounds 1, 2, 3, and 4.

********** rotation is separate from addition to prevent recomputation.

********** ff(a, b, c, d, x, s, ac) represent a = b + ((a + f(b, c, d) + x + ac) <<< s)

********** gg(a, b, c, d, x, s, ac) represent a = b + ((a + g(b, c, d) + x + ac) <<< s)

********** hh(a, b, c, d, x, s, ac) represent a = b + ((a + h(b, c, d) + x + ac) <<< s)

********** ii(a, b, c, d, x, s, ac) represent a = b + ((a + i(b, c, d) + x + ac) <<< s)

**********/

#define ff(a, b, c, d, x, s, ac)

#define gg(a, b, c, d, x, s, ac)

#define hh(a, b, c, d, x, s, ac)

#define ii(a, b, c, d, x, s, ac)

md5::md5()

void md5::input(string str)

void md5::prin***5()

}cout << endl;

}void md5::calc()

void md5::initialize()

void md5::pad()

// padding in

in.push_back(0x80);

while ((in.size()*8) % 512 != 448)

in.push_back(0x00);

for (int i = 0; i < 8; ++ i)

in.push_back(tmp[i]);

// changing each length of block from 8 to 32

for (int i = 0; i < in.size()/4; ++ i)

}}void md5::transform()

}void md5::getans()

測試**:main.cpp

#include "mymd5.cpp"

using namespace std;

int main()

return 0;

}

測試:

MD5演算法實現

md5.h ifndef md5 h define md5 h typedef struct md5 ctx 非線性輔助函式 define f x,y,z x y x z define g x,y,z x z y z define h x,y,z x y z define i x,y,z y x z...

MD5演算法實現

md5.h ifndef md5 h define md5 h typedef struct md5 ctx 非線性輔助函式 define f x,y,z x y x z define g x,y,z x z y z define h x,y,z x y z define i x,y,z y x z...

MD5加密演算法 簡單實現

md5 特點 任意長度的二進位制數,經過md5加密計算後,都可以得到乙個128位長的二進位制密文 相同的原文經過加密後得到的密文永遠相同 不同的原文經過加密後得到的密文永遠不同 只能從原文加密成密文,密文永遠也解不回原文md5加密演算法在很多應用場景下都有所應用 md5 應用 1.建立md5util...