资源简介
MD4加密算法源码
使用MD4加密一段字符串
C++源码
代码片段和文件信息
#include
#include
#include
#include
#define F(x y z) (((x) & (y)) | ((~x) & (z)))
#define G(x y z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
#define H(x y z) ((x) ^ (y) ^ (z))
//x向左循环移y位
//#define RL(x y) (((x) << (y)) | ((x) >> (32 - (y))))
#define RL(x y) ((x) << (y))
#define FF(a b c d x s) a = (RL((a + F(bcd) + x)s))
#define GG(a b c d x s) a = (RL((a + G(bcd) + x + 0x5a827999)s))
#define HH(a b c d x s) a = (RL((a + H(bcd) + x + 0x6ed9eba1)s))
/*
i临时变量len文件长flen[2]为64位二进制表示的文件初始长度
unsigned为32位适合x[i]的长度.
*/
unsigned ABCDabcdilenflen[2]x[16];
char filename[200]; //文件名
FILE *fp;
void md4(){ //MD4核心算法共48轮
a=Ab=Bc=Cd=D;
/**//* Round 1 */
FF (a b c d x[ 0] 3); /**//* 1 */
FF (d a b c x[ 1] 7); /**//* 2 */
FF (c d a b x[ 2] 11); /**//* 3 */
FF (b c d a x[ 3] 19); /**//* 4 */
FF (a b c d x[ 4] 3); /**//* 5 */
FF (d a b c x[ 5] 7); /**//* 6 */
FF (c d a b x[ 6] 11); /**//* 7 */
FF (b c d a x[ 7] 19); /**//* 8 */
FF (a b c d x[ 8] 3); /**//* 9 */
FF (d a b c x[ 9] 7); /**//* 10 */
FF (c d a b x[10] 11); /**//* 11 */
FF (b c d a x[11] 19); /**//* 12 */
FF (a b c d x[12] 3); /**//* 13 */
FF (d a b c x[13] 7); /**//* 14 */
FF (c d a b x[14] 11); /**//* 15 */
FF (b c d a x[15] 19); /**//* 16 */
/**//* Round 2 */
GG (a b c d x[ 1] 3); /**//* 17 */
GG (d a b c x[ 6] 5); /**//* 18 */
GG (c d a b x[11] 9); /**//* 19 */
GG (b c d a x[ 0] 13); /**//* 20 */
GG (a b c d x[ 5] 3); /**//* 21 */
GG (d a b c x[10] 5); /**//* 22 */
GG (c d a b x[15] 9); /**//* 23 */
GG (b c d a x[ 4] 13); /**//* 24 */
GG (a b c d x[ 9] 3); /**//* 25 */
GG (d a b c x[14] 5); /**//* 26 */
GG (c d a b x[ 3] 9); /**//* 27 */
GG (b c d a x[ 8] 13); /**//* 28 */
GG (a b c d x[13] 3); /**//* 29 */
GG (d a b c x[ 2] 5); /**//* 30 */
GG (c d a b x[ 7] 9); /**//* 31 */
GG (b c d a x[12] 13); /**//* 32 */
/**//* Round 3 */
HH (a b c d x[ 5] 3); /**//* 33 */
HH (d a b c x[ 8] 9); /**//* 34 */
HH (c d a b x[11] 11); /**//* 35 */
HH (b c d a x[14] 15); /**//* 36 */
HH (a b c d x[ 1] 3); /**//* 37 */
HH (d a b c x[ 4] 9); /**//* 38 */
HH (c d a b x[ 7] 11); /**//* 39 */
HH (b c d a x[10] 15); /**//* 40 */
HH (a b c d x[13] 3); /**//* 41 */
HH (d a b c x[ 0] 9); /**//* 42 */
HH (c d a b x[ 3] 11); /**//* 43 */
HH (b c d a x[ 6] 15); /**//* 44 */
HH (a b c d x[ 9] 3); /**//* 45 */
HH (d a b c x[12] 9); /**//* 46 */
HH (c d a b x[15] 11); /**//* 47 */
HH (b c d a x[ 2] 15); /**//* 48 */
A += a;
B= b;
C += c;
D += d;
}
void main()
{
while(1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-12-06 19:13 实验四-MD4\
文件 54784 2011-12-06 21:20 实验四-MD4\实验4 Hash 算法 MD4.doc
目录 0 2011-12-08 19:24 实验四-MD4\Debug\
文件 41984 2011-12-08 19:35 实验四-MD4\Debug\vc60.idb
文件 61440 2011-12-08 19:35 实验四-MD4\Debug\vc60.pdb
文件 188476 2011-12-08 19:35 实验四-MD4\Debug\md4.exe
文件 558080 2011-12-08 19:35 实验四-MD4\Debug\md4.pdb
文件 0 2011-12-08 19:35 实验四-MD4\Debug\md4.sbr
文件 274120 2011-12-08 19:35 实验四-MD4\Debug\md4.pch
文件 13369 2011-12-08 19:35 实验四-MD4\Debug\md4.obj
文件 188992 2011-12-08 19:35 实验四-MD4\Debug\md4.ilk
文件 82944 2011-12-08 19:35 实验四-MD4\Debug\md4.bsc
文件 41984 2011-12-08 19:38 实验四-MD4\md4.ncb
文件 1496 2011-12-08 19:35 实验四-MD4\md4.plg
文件 5063 2011-12-08 19:26 实验四-MD4\md4.cpp
文件 122904 2011-12-08 19:27 实验四-MD4\实验4 Hash 算法 MD4.pdf
文件 48640 2011-12-08 19:38 实验四-MD4\md4.opt
文件 3369 2011-12-08 19:38 实验四-MD4\md4.dsp
文件 531 2011-12-08 19:38 实验四-MD4\md4.dsw
- 上一篇:AES加密可加密文件
- 下一篇:吉林大学软件学院2011数据结构实验题C++实现
评论
共有 条评论