網上找到的實現md5函式**,包括乙個標頭檔案md5.h和乙個原始檔md5.c,用下面的測試**test.c測試通過,各檔案依次如下:
標頭檔案md5.h:
1view code#ifndef md5_h
2#define md5_h
34 typedef struct
5md5_ctx;
1011
12#define f(x,y,z) ((x & y) | (~x & z))
13#define g(x,y,z) ((x & z) | (y & ~z))
14#define h(x,y,z) (x^y^z)
15#define i(x,y,z) (y ^ (x | ~z))
16#define rotate_left(x,n) ((x << n) | (x >> (32-n)))
17#define ff(a,b,c,d,x,s,ac) \
1823
#define gg(a,b,c,d,x,s,ac) \
2429
#define hh(a,b,c,d,x,s,ac) \
3035
#define ii(a,b,c,d,x,s,ac) \
36
41void md5init(md5_ctx *context);
42void md5update(md5_ctx *context,unsigned char *input,unsigned int
inputlen);
43void md5final(md5_ctx *context,unsigned char digest[16
]);44
void md5transform(unsigned int state[4],unsigned char block[64
]);45
void md5encode(unsigned char *output,unsigned int *input,unsigned int
len);
46void md5decode(unsigned int *output,unsigned char *input,unsigned int
len);
4748
#endif
原始檔md5.c:
1 #include 2 #include "view codemd5.h"3
4 unsigned char padding=;89
void md5init(md5_ctx *context)
1018
void md5update(md5_ctx *context,unsigned char *input,unsigned int
inputlen)
19
36else
3740 memcpy(&context->buffer[index],&input[i],inputlen-i);41}
42void md5final(md5_ctx *context,unsigned char digest[16
])43
53void md5encode(unsigned char *output,unsigned int *input,unsigned int
len)
5465}66
void md5decode(unsigned int *output,unsigned char *input,unsigned int
len)
6778}79
void md5transform(unsigned int state[4],unsigned char block[64
])80
測試**test.c:
1 #include 2 #include 3 #includeview code4 #include "
md5.h"5
6int main(int argc, char *argv)720
21getchar();
2223
return0;
24 }
MD5實現HTTP摘要認證
摘要演算法又稱雜湊演算法,它表示輸入任意長度的資料,輸出固定長度的資料,它的主要特徵是加密過程不需要金鑰,並且經過加密的資料無法被解密,目前可以被解密逆向的只有crc32演算法,只有輸入相同的明文資料經過相同的訊息摘要演算法才能得到相同的密文。訊息摘要演算法不存在金鑰的管理與分發問題,適合於分布式網...
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...