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...