资源简介
完整代码,点击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 < inputLen; i += 64)
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控件的属性详解
相关资源
- Hash1.04(md5校验工具) 绿色免费版
- 右键属性文件校验插件可同时生成十
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- ado数据库MFC图书管理系统vs2010
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
评论
共有 条评论