资源简介
c语言,vc6.0编译通过,输入文件名路径,就可以计算出文件的md5值,效率还可以的
代码片段和文件信息
#include
#include
#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 RL(x y) (((x) << (y)) | ((x) >> (32 - (y)))) //x向左循环移y位
#define PP(x) (x<<24)|((x<<8)&0xff0000)|((x>>8)&0xff00)|(x>>24) //将x高低位互换例如PP(aabbccdd)=ddccbbaa
#define FF(a b c d x s ac) a = b + (RL((a + F(bcd) + x + ac)s))
#define GG(a b c d x s ac) a = b + (RL((a + G(bcd) + x + ac)s))
#define HH(a b c d x s ac) a = b + (RL((a + H(bcd) + x + ac)s))
#define II(a b c d x s ac) a = b + (RL((a + I(bcd) + x + ac)s))
unsigned ABCDabcdilenflen[2]x[16]; //i临时变量len文件长flen[2]为64位二进制表示的文件初始长度
char filename[200]; //文件名
FILE *fp;
void md5(){ //MD5核心算法供64轮
a=Ab=Bc=Cd=D;
/**//* Round 1 */
FF (a b c d x[ 0] 7 0xd76aa478); /**//* 1 */
FF (d a b c x[ 1] 12 0xe8c7b756); /**//* 2 */
FF (c d a b x[ 2] 17 0x242070db); /**//* 3 */
FF (b c d a x[ 3] 22 0xc1bdceee); /**//* 4 */
FF (a b c d x[ 4] 7 0xf57c0faf); /**//* 5 */
FF (d a b c x[ 5] 12 0x4787c62a); /**//* 6 */
FF (c d a b x[ 6] 17 0xa8304613); /**//* 7 */
FF (b c d a x[ 7] 22 0xfd469501); /**//* 8 */
FF (a b c d x[ 8] 7 0x698098d8); /**//* 9 */
FF (d a b c x[ 9] 12 0x8b44f7af); /**//* 10 */
FF (c d a b x[10] 17 0xffff5bb1); /**//* 11 */
FF (b c d a x[11] 22 0x895cd7be); /**//* 12 */
FF (a b c d x[12] 7 0x6b901122); /**//* 13 */
FF (d a b c x[13] 12 0xfd987193); /**//* 14 */
FF (c d a b x[14] 17 0xa679438e); /**//* 15 */
FF (b c d a x[15] 22 0x49b40821); /**//* 16 */
/**//* Round 2 */
GG (a b c d x[ 1] 5 0xf61e2562); /**//* 17 */
GG (d a b c x[ 6] 9 0xc040b340); /**//* 18 */
GG (c d a b x[11] 14 0x265e5a51); /**//* 19 */
GG (b c d a x[ 0] 20 0xe9b6c7aa); /**//* 20 */
GG (a b c d x[ 5] 5 0xd62f105d); /**//* 21 */
GG (d a b c x[10] 9 0x02441453); /**//* 22 */
GG (c d a b x[15] 14 0xd8a1e681); /**//* 23 */
GG (b c d a x[ 4] 20 0xe7d3fbc8); /**//* 24 */
GG (a b c d x[ 9] 5 0x21e1cde6); /**//* 25 */
GG (d a b c x[14] 9 0xc33707d6); /**//* 26 */
GG (c d a b x[ 3] 14 0xf4d50d87); /**//* 27 */
GG (b c d a x[ 8] 20 0x455a14ed); /**//* 28 */
GG (a b c d x[13] 5 0xa9e3e905); /**//* 29 */
GG (d a b c x[ 2] 9 0xfcefa3f8); /**//* 30 */
GG (c d a b x[ 7] 14 0x676f02d9); /**//* 31 */
GG (b c d a x[12] 20 0x8d2a4c8a); /**//* 32 */
/**//* Round 3 */
HH (a b c d x[ 5] 4 0xfffa3942); /**//* 33 */
HH (d a b c x[ 8] 11 0x8771f681); /**//* 34 */
HH (c d a b x[11] 16 0x6d9d6122); /**//* 35 */
HH (b c d a x[14] 23 0xfde5380c); /**//* 36 */
HH (a b c d x[ 1] 4 0xa4beea44); /
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 176179 2013-05-11 12:58 md5\Debug\md5.exe
文件 178212 2013-05-11 12:58 md5\Debug\md5.ilk
文件 22130 2013-05-11 12:58 md5\Debug\md5.obj
I.A.... 182124 2013-05-11 12:58 md5\Debug\md5.pch
文件 353280 2013-05-11 12:58 md5\Debug\md5.pdb
文件 33792 2013-05-11 12:58 md5\Debug\vc60.idb
文件 45056 2013-05-11 12:58 md5\Debug\vc60.pdb
文件 5984 2013-05-09 20:36 md5\md5.c
文件 3363 2013-05-11 12:58 md5\md5.dsp
文件 529 2013-05-11 12:58 md5\md5.dsw
文件 41984 2013-05-11 12:58 md5\md5.ncb
文件 48640 2013-05-11 12:58 md5\md5.opt
文件 240 2013-05-11 12:58 md5\md5.plg
目录 0 2013-05-11 12:58 md5\Debug
目录 0 2013-05-11 12:58 md5
----------- --------- ---------- ----- ----
1091513 15
- 上一篇:操作系统实习:动态分区分配C++实现
- 下一篇:图的实现:邻接表
相关资源
- 操作系统实习:动态分区分配C++实现
- 遥感图像彩色合成C++
- vc++ 浏览器 完整版
- 4X4矩阵键盘+LCD1602显示
- 电话簿管理程序C++语言编写
- C语言求first集sellect集follow集
- C++选课系统
- C语言编程规范个人规约
- 基于OpenCV的图像检索系统(源码)
- 原创c++二叉树抽象数据类型实现
- C++基础入门编写游戏代码及角色扮演
- 51单片机驱动步进电机(含电路图和
- C语言课程设计—运动会管理系统(
- c语言课程设计 简易通讯录 源代码
- 杂志订阅系统C++
- C++实验报告
- 多项式类的C++实现乘法、加法、代入
- 文件系统c语言实现,在linux下编译
- 哈夫曼编码
- B树 C语言实现
- 湖南大学C语言程序设计考研试题
- aes算法实现C++)
- C++ 数字图像处理源代码
- 学生信息管理mfcword文档
- 贪心法解决背包问题c语言代码
- c++面向对象课程设计报告_(学生成绩
- c++primer_第五版_中文版(完整).rar
- c++实现的哈夫曼编码和解码源代码
- 基于VC++的带通滤波器的设计与实现
- linux下用C语言实现寻找1到1亿内的素数
评论
共有 条评论