// md4-collision.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <stdlib.h>
# 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)
# define LROT(x,s) (((x)<<s)|((x)>>(32-s)))
# define RROT(x,s) (((x)>>s)|((x)<<(32-s)))
# define bit(x,n) ((x<<(32-n))>>31)
int main()
{
unsigned long a[13], b[13], c[13], d[13];
unsigned long a1[13], b1[13], c1[13], d1[13];
unsigned long k1, k2, i;
a[0] = a1[0] = 0x67452301;
b[0] = b1[0] = 0xefcdab89;
c[0] = c1[0] = 0x98badcfe;
d[0] = d1[0] = 0x10325476;
k1 = 0x5a827999;
k2 = 0x6ed9eba1;
unsigned long z1[16] = { 0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15 };
unsigned long z2[16] = { 0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15 };
unsigned long s0[16] = { 3,7,11,19,3,7,11,19,3,7,11,19,3,7,11,19 };
unsigned long s1[16] = { 3,5,9,13,3,5,9,13,3,5,9,13,3,5,9,13 };
unsigned long s2[16] = { 3,9,11,15,3,9,11,15,3,9,11,15,3,9,11,15 };
unsigned long x[16] = { 0xbcdd2674,0x53fce1ed,0x25d202ce,0xe87d102e,
0xf45be728,0xacc992cc,0x6acfb3ea,0x7dbb29d4,
0xed03bf75,0xc6aedc45,0xd442b710,0xfca27d99,
0xa5f5eff1,0xfb2ee79b,0x0f590d68,0x4989f380 };
unsigned long M[48];
unsigned long M1[48];
for (i = 0; i<16; i++)
{
M[i] = x[i];
}
a[1] = LROT((a[0] + F(b[0], c[0], d[0]) + M[0]), 3);
d[1] = LROT((d[0] + F(a[1], b[0], c[0]) + M[1]), 7);
c[1] = LROT((c[0] + F(d[1], a[1], b[0]) + M[2]), 11);
b[1] = LROT((b[0] + F(c[1], d[1], a[1]) + M[3]), 19);
//第5
a[2] = LROT((a[1] + F(b[1], c[1], d[1]) + M[4]), 3);
d[2] = LROT((d[1] + F(a[2], b[1], c[1]) + M[5]), 7);
c[2] = LROT((c[1] + F(d[2], a[2], b[1]) + M[6]), 11);
b[2] = LROT((b[1] + F(c[2], d[2], a[2]) + M[7]), 19);
//第9
a[3] = LROT((a[2] + F(b[2], c[2], d[2]) + M[8]), 3);
d[3] = LROT((d[2] + F(a[3], b[2], c[2]) + M[9]), 7);
c[3] = LROT((c[2] + F(d[3], a[3], b[2]) + M[10]), 11);
b[3] = LROT((b[2] + F(c[3], d[3], a[3]) + M[11]), 19);
a[4] = LROT((a[3] + F(b[3], c[3], d[3]) + M[12]), 3);
d[4] = LROT((d[3] + F(a[4], b[3], c[3]) + M[13]), 7);
c[4] = LROT((c[3] + F(d[4], a[4], b[3]) + M[14]), 11);
b[4] = LROT((b[3] + F(c[4], d[4], a[4]) + M[15]), 19);
//第17个
a[5] = LROT((a[4] + G(b[4], c[4], d[4]) + M[0] + k1), 3);
if (bit(a[5], 20) ^ bit(b[4], 20))
{
M[15] = M[15] + 0x20000000;
b[4] = LROT((b[3] + F(c[4], d[4], a[4]) + M[15]), 19);
printf("b[4]=%d\n", bit(b[4], 16));
a[5] = LROT((a[4] + G(b[4], c[4], d[4]) + M[0] + k1), 3);
}
if (bit(a[5], 29))
{
M[0] = M[0] + 0x2000000;
a[1] = LROT((a[0] + F(b[0], c[0], d[0]) + M[0]), 3);
d[1] = LROT((d[0] + F(a[1], b[0], c[0]) + M[1]), 7);
c[1] = LROT((c[0] + F(d[1], a[1], b[0]) + M[2]), 11);
b[1] = LROT((b[0] + F(c[1], d[1], a[1]) + M[3]), 19);
M[4] = M[4] - 0x10000000;
a[2] = LROT((a[1] + F(b[1], c[1], d[1]) + M[4]), 3);
a[5] = LROT((a[4] + G(b[4], c[4], d[4]) + M[0] + k1), 3);
}
if (bit(a[5], 32) ^ bit(b[4], 32))
{
M[0] = M[0] + 0x8000000;
a[1] = LROT((a[0] + F(b[0], c[0], d[0]) + M[0]), 3);
d[1] = LROT((d[0] + F(a[1], b[0], c[0]) + M[1]), 7);
c[1] = LROT((c[0] + F(d[1], a[1], b[0]) + M[2]), 11);
b[1] = LROT((b[0] + F(c[1], d[1], a[1]) + M[3]), 19);
M[4] = M[4] - 0x40000000;
a[2] = LROT((a[1] + F(b[1], c[1], d[1]) + M[4]), 3);
M[15] = M[15] + 0x100;
b[4] = LROT((b[3] + F(c[4], d[4], a[4]) + M[15]), 19);
printf("bit(b[4],28)=%d\n", bit(b[4], 28));
a[5] = LROT((a[4] + G(b[4], c[4], d[4]) + M[0] + k1), 3);
}
//第18个
d[5] = LROT((d[4] + G(a[5], b[4], c[4]) + M[4] + k1), 5);
if (!bit(d[5], 29))
{
M[1] = M[1] + 0x10000;
d[1] = LROT((d[0] + F(a[1], b[0], c[0]) + M[1]), 7);
c[1] = LROT((c[0] + F(d[1], a[1], b[0]) + M[2]), 11);
b[1] = LROT((b[0] + F(c[1], d[1], a[1]) + M[3]), 19);
M[4] = M[4] - 0x800000;
a[2] = LROT((a[1] + F(b[1], c[1], d[1]) + M[4]), 3);
M[5] = M[5] - 0x800000;
d[2] = LROT((d[1] + F(a[�
没有合适的资源?快使用搜索试试~ 我知道了~
md4-collision md4碰撞
共8个文件
h:2个
cpp:2个
sln:1个
3星 · 超过75%的资源 需积分: 10 22 下载量 143 浏览量
2017-12-16
23:40:46
上传
评论 3
收藏 8KB ZIP 举报
温馨提示
这个例子描述了MD4碰撞,很有研究价值,大家可以仔细研究下...这个例子描述了MD4碰撞,很有研究价值,大家可以仔细研究下
资源推荐
资源详情
资源评论
收起资源包目录
md4-collision.zip (8个子文件)
md4-collision.sln 1KB
md4-collision
stdafx.cpp 328B
stdafx.h 366B
targetver.h 370B
md4-collision.cpp 28KB
md4-collision.vcxproj.user 165B
md4-collision.vcxproj.filters 1KB
md4-collision.vcxproj 8KB
共 8 条
- 1
资源评论
- Jenkin_Hou2019-04-01不是王小云的算法
- qq_335204532018-04-18还行挺好的东西
Tai7sy
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功