資源簡介
完整代碼,點擊sln可以打開工程,并在VS2010上調試成功,對初學者來說簡單易懂,還可以作為工具類計算MD5,很實用的小應用。

代碼片段和文件信息
#include?“md5.h“
#include?“stdio.h“
#include?“memory.h“
#define?S11?7
#define?S12?12
#define?S13?17
#define?S14?22
#define?S21?5
#define?S22?9
#define?S23?14
#define?S24?20
#define?S31?4
#define?S32?11
#define?S33?16
#define?S34?23
#define?S41?6
#define?S42?10
#define?S43?15
#define?S44?21
static?void?MD5Transform?(UINT32?a[4]?unsigned?char?b[64]);
static?void?Encode?(unsigned?char?*?UINT32?*?unsigned?int);
static?void?Decode?(UINT32?*?unsigned?char?*?unsigned?int);
static?unsigned?char?PADDING[64]?=?{
0x80?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0
0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0
0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0?0
};
#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)))
#define?ROTATE_LEFT(x?n)?(((x)?<(n))?|?((x)?>>?(32-(n))))
#define?FF(a?b?c?d?x?s?ac)?{?\
(a)?+=?F?((b)?(c)?(d))?+?(x)?+?(UINT32)(ac);?\
(a)?=?ROTATE_LEFT?((a)?(s));?\
(a)?+=?(b);?\
}
#define?GG(a?b?c?d?x?s?ac)?{?\
(a)?+=?G?((b)?(c)?(d))?+?(x)?+?(UINT32)(ac);?\
(a)?=?ROTATE_LEFT?((a)?(s));?\
(a)?+=?(b);?\
}
#define?HH(a?b?c?d?x?s?ac)?{?\
(a)?+=?H?((b)?(c)?(d))?+?(x)?+?(UINT32)(ac);?\
(a)?=?ROTATE_LEFT?((a)?(s));?\
(a)?+=?(b);?\
}
#define?II(a?b?c?d?x?s?ac)?{?\
(a)?+=?I?((b)?(c)?(d))?+?(x)?+?(UINT32)(ac);?\
(a)?=?ROTATE_LEFT?((a)?(s));?\
(a)?+=?(b);?\
}
void?MD5Init?(MD5_CTX?*context)
{
context->count[0]?=?context->count[1]?=?0;
context->state[0]?=?0x67452301;
context->state[1]?=?0xefcdab89;
context->state[2]?=?0x98badcfe;
context->state[3]?=?0x10325476;
}
void?MD5Update?(MD5_CTX?*context?unsigned?char?*input?unsigned?int?inputLen)
{
unsigned?int?i?index?partLen;
index?=?(unsigned?int)((context->count[0]?>>?3)?&?0x3F);
if?((context->count[0]?+=?((UINT32)inputLen?<3))
((UINT32)inputLen?<3))
context->count[1]++;
context->count[1]?+=?((UINT32)inputLen?>>?29);
partLen?=?64?-?index;
if?(inputLen?>=?partLen)?{
memcpy((unsigned?char?*)&context->buffer[index]?(unsigned?char?*)input?partLen);
MD5Transform?(context->state?context->buffer);
for?(i?=?partLen;?i?+?63? MD5Transform?(context->state?&input[i]);
index?=?0;
}
else
i?=?0;
memcpy((unsigned?char?*)&context->buffer[index]?(unsigned?char?*)&input[i]
inputLen-i);
}
void?MD5Final?(unsigned?char?digest[16]?MD5_CTX?*?context)
{
unsigned?char?bits[8];
unsigned?int?index?padLen;
Encode?(bits?context->count?8);
index?=?(unsigned?int)((context->count[0]?>>?3)?&?0x3f);
padLen?=?(index?56)???(56?-?index)?:?(120?-?index);
MD5Update?(context?PADDING?padLen);
MD5Update?(context?bits?8);
Encode?(digest?context->state?16);
memset?((unsigned?char?*)context?0?si
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1441792??2012-07-20?14:10??實例MD5\ipch\實例md5-80ec19a7\實例md5-7305133b.ipch
?????文件????????838??2012-07-20?14:10??實例MD5\實例MD5\Debug\cl.command.1.tlog
?????文件???????1924??2012-07-20?14:10??實例MD5\實例MD5\Debug\CL.read.1.tlog
?????文件????????620??2012-07-20?14:10??實例MD5\實例MD5\Debug\CL.write.1.tlog
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????????2??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件???????1942??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件???????3476??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件???????1316??2012-07-20?14:10??實例MD5\實例MD5\Debug\li
?????文件??????17268??2012-07-20?14:10??實例MD5\實例MD5\Debug\md5.obj
?????文件????????472??2012-07-20?14:10??實例MD5\實例MD5\Debug\mt.command.1.tlog
?????文件????????570??2012-07-20?14:10??實例MD5\實例MD5\Debug\mt.read.1.tlog
?????文件????????502??2012-07-20?14:10??實例MD5\實例MD5\Debug\mt.write.1.tlog
?????文件????????704??2012-07-20?14:10??實例MD5\實例MD5\Debug\rc.command.1.tlog
?????文件????????474??2012-07-20?14:10??實例MD5\實例MD5\Debug\rc.read.1.tlog
?????文件????????482??2012-07-20?14:10??實例MD5\實例MD5\Debug\rc.write.1.tlog
?????文件??????44032??2012-07-20?14:10??實例MD5\實例MD5\Debug\vc100.idb
?????文件??????61440??2012-07-20?14:10??實例MD5\實例MD5\Debug\vc100.pdb
?????文件????????406??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5.exe.em
?????文件????????472??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5.exe.em
?????文件????????381??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5.exe.intermediate.manifest
?????文件????????114??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5.lastbuildstate
?????文件???????4044??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5.log
?????文件????????200??2012-07-20?14:10??實例MD5\實例MD5\Debug\實例MD5_manifest.rc
?????文件???????7946??2012-07-20?14:10??實例MD5\實例MD5\md5.cpp
?????文件????????496??2012-07-20?14:10??實例MD5\實例MD5\md5.h
............此處省略15個文件信息
- 上一篇:https VC實現的源代碼
- 下一篇:Adodc控件的屬性詳解
評論
共有 條評論