关于000000的MD5码

作者&投稿:达奚骨 (若有异议请与网页底部的电邮联系)
穷举破解MD5码要多长时间?~

大小写字母+数字总共有26+26+10=62中字符
这里先定义“a^b”表示a的b次方
则从1位到11位所包含的所有的密码的数量为:
62^1+62^2+62^3+……+62^11=52 889 619 055 703 278 000
条密码
然后,在INTEL CORE T7100 1.8GHz的CPU下,用一个核心,破解速度可以达到4 000 000条密码/秒
这样,要穷举上面所说的范围,所用的时间就是
52 889 619 055 703 278 000
---------------------------=13 222 404 763 926秒
4 000 000
换算下来,也就是425103年零12天4小时12分6秒
上面就是你要的结果了。。。

网上搜索一大堆。。现在下的软件基本上不用MD5码验校。。没什么意思

被加密的数据 和 结果 是一一对应的,000000只会有一个MD5值
000000 <---------->670b14728ad9902aecba32e22fa4f6bd
670b14728ad9902aecba32e22fa4f6bd <---------->ff92a240d11b05ebd392348c35f781b2
原理上MD5是不可逆的, 452D1CBF1996BAE70F62290C76F01DB6 ,所以你想要拿结果知道被加密的原始数据,是不可行的。
现在所谓的MD5破解,都是用已知的对应关系,让你查寻而已,有就能知道,没有就放弃吧!

如果你确认,是以你说的形式,不停的MD5,得到452D1CBF1996BAE70F62290C76F01DB6的 ,那你写个小程序,不停循环MD5,直到得到结果就行了。

自己用C语言写的简单的MD5算法实现。

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>

typedef unsigned char BYTE;
typedef unsigned int UINT;
typedef UINT MD5_SUB_ARRAY[16];
typedef UINT MD5_TRANSORM_FUNC(UINT,UINT,UINT);
typedef struct
{
UINT a;
UINT b;
UINT c;
UINT d;
MD5_SUB_ARRAY sub_array;
}MD5_TRANSFORM_PARAM;

const double MAX_INT = (double)0xFFFFFFFF + 1.0;

const UINT MD5_TRANSFORM_MATRIX[4][16][3] =
{

{
, , , ,
, , , ,
, , , ,
, , , ,
},

{
, , , ,
, , , ,
, , , ,
, , , ,
},

{
, , ,,
, , ,,
, , ,,
, , ,,
},

{
, , ,,
, , ,,
, , ,,
, , ,,
},
};

static UINT MD5_TRANSFORM_ARRAY[65];

void MD5_Init()
{
int x;
for(x = 1; x <= 64; x++)
{
MD5_TRANSFORM_ARRAY[x] = (UINT)(MAX_INT * fabs(sin(x)));
}
}

UINT F(UINT x,UINT y,UINT z)
{
return ((x & y) | ((~x) & z));
}

UINT G(UINT x,UINT y,UINT z)
{
return ((x & z) | (y & (~z)));
}

UINT H(UINT x,UINT y,UINT z)
{
return (x ^ y ^ z);
}

UINT I(UINT x,UINT y,UINT z)
{
return (y ^ (x | (~z)));
}

BYTE* MD5_prepare_data(const BYTE* data,int len,int* new_len)
{
int rest,fill,size;
BYTE* new_data;
UINT bit_len;

// (1) 字节补齐
rest = len % 56;
if (rest <= 56) fill = 56 - rest;
else fill = (64 - rest) + 56;

new_data = (BYTE*)malloc(len + fill + 8);
if (NULL == new_data) return NULL;

if (len > 0) memcpy(new_data,data,len);
if (fill > 0) memset(new_data + len,0x80,1);
if (fill > 1) memset(new_data + len + 1,0,fill - 1);

size = fill + len;

// (2) 附加数据的比特长度
bit_len = len * 8;
// (64位二进制数表示的)比特长度的低32位
memset(new_data + size + 0,(bit_len & 0x000000FF), 1);
memset(new_data + size + 1,(bit_len & 0x0000FF00) >> 8, 1);
memset(new_data + size + 2,(bit_len & 0x00FF0000) >> 16,1);
memset(new_data + size + 3,(bit_len & 0xFF000000) >> 24,1);
// 不考虑比特长度超出32位无符号数表示范围,所以高32位总是0
memset(new_data + size + 4,0,4);

*new_len = size + 8;

return new_data;
}

void MD5_transform(MD5_TRANSFORM_PARAM* param,int ring,MD5_TRANSORM_FUNC func)
{
UINT a,b,c,d,s,k,i;
UINT abcd[4];
UINT *X,*T;
int index;

abcd[0] = param->a;
abcd[1] = param->b;
abcd[2] = param->c;
abcd[3] = param->d;
X = param->sub_array;
T = MD5_TRANSFORM_ARRAY;

for(index = 0; index < 16; index++)
{
a = abcd[(3 * index + 0) % 4];
b = abcd[(3 * index + 1) % 4];
c = abcd[(3 * index + 2) % 4];
d = abcd[(3 * index + 3) % 4];

k = MD5_TRANSFORM_MATRIX[ring][index][0];
s = MD5_TRANSFORM_MATRIX[ring][index][1];
i = MD5_TRANSFORM_MATRIX[ring][index][2];

a = a + func(b,c,d) + X[k] + T[i];
a = ( a << s) | ( a >> (32 - s)); // 循环左移
a = a + b;

abcd[(3 * index + 0) % 4] = a;
}

param->a = abcd[0];
param->b = abcd[1];
param->c = abcd[2];
param->d = abcd[3];
}

int MD5(const BYTE* data,int len)
{
int x,y,new_len;
MD5_TRANSFORM_PARAM param;
UINT AA,BB,CC,DD;
BYTE* buf;

MD5_Init();

buf = MD5_prepare_data(data,len,&new_len);
if (buf == NULL) return -1;

AA = 0x67452301;
BB = 0xefcdab89;
CC = 0x98badcfe;
DD = 0x10325476;

for(x = 0; x < new_len / 64; x++)
{
param.a = AA;
param.b = BB;
param.c = CC;
param.d = DD;

for(y = 0; y < 16; y++)
{
param.sub_array[y] = buf[64 * x + 4 * y + 0];
param.sub_array[y] += buf[64 * x + 4 * y + 1] << 8;
param.sub_array[y] += buf[64 * x + 4 * y + 2] << 16;
param.sub_array[y] += buf[64 * x + 4 * y + 3] << 24;
}
MD5_transform(¶m,0,F);
MD5_transform(¶m,1,G);
MD5_transform(¶m,2,H);
MD5_transform(¶m,3,I);

AA += param.a;
BB += param.b;
CC += param.c;
DD += param.d;
}

printf("MD5(\"%s\")=",data);

printf("%02X%02X%02X%02X",
(AA & 0x000000FF),
(AA & 0x0000FF00) >> 8,
(AA & 0x00FF0000) >> 16,
(AA & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(BB & 0x000000FF),
(BB & 0x0000FF00) >> 8,
(BB & 0x00FF0000) >> 16,
(BB & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(CC & 0x000000FF),
(CC & 0x0000FF00) >> 8,
(CC & 0x00FF0000) >> 16,
(CC & 0xFF000000) >> 24);

printf("%02X%02X%02X%02X",
(DD & 0x000000FF),
(DD & 0x0000FF00) >> 8,
(DD & 0x00FF0000) >> 16,
(DD & 0xFF000000) >> 24);

printf("\n");

return 0;
}

int main()
{
MD5("",0);
MD5("a",1);
MD5("abc",3);
MD5("message digest",14);
MD5("abcdefghijklmnopqrstuvwxyz",26);

return 0;
}


这太难了,几乎无法完成。
因为有可能是几百次的 md5 ,也有可能根本不是 MD5!!!


ping = 是什么意思
(4% loss),Approximate round trip times in milli-seconds: Minimum = 40ms, Maximum = 51ms, ...(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负) C:\\>ping -l 65500 -t ...[HKEY_LOCAL_MACHINE\\sys tem\\CurrentControlSet\\Services\\Tcpip\\Parameters] "DefaultTTL"=dword:000000...

蓝屏代码0x000000A5如何解决?
蓝屏代码0x000000a5解决方案:如果没有相应BIOS升级, 那么可在安装Windows系统时, 当出现”press F6 if you need to install a third-party SCSI or RAID driver”提示时, 按下F7键, 这样Windows便会自动禁止安装ACPI HAL, 而安装Standard PC HAL.如果是在安装系统时出现蓝屏代码0x000000a5,因为一键...

我的手机s i m卡p in是什么?
手机有好几种密码。一种是服务密码,默认一般是是6位,“000000”或手机尾号后6位,登录服务商网站查询个人资料时使用;一种是sim卡锁卡密码(pin码和puk码),默认一般是8位,防止手机丢失,造成话费损失时使用;还有就是锁屏密码(也叫pin码),默认一般也是四位1234或0000,防止外人偷看手机屏幕内容...

0x7c931669指令引用0x000000内存。该内存不能read
我的看法是多种因素引起的:如与电脑配置低了,内存小了有关系,也有可能是盗版的原因。总的来说是电脑的I\/O忙不过来。也可能与虚拟内存、缓存、临时工作空间等的设置不当,甚至操作时的动作快了也会出现。你也可到网上搜索一下,不过目前也没有一个权威的说法。我的电脑升级后,内存从512M升到2G...

120000000平方米=几公顷=几平方千米
120000000平方米=12000公顷=120平方千米 从小到大的顺序主要有:mm²(平方毫米)、cm²(平方厘米)、dm²(平方分米)、m²(平方米)、hm²(公顷)、km²(平方千米)。在国际单位制(SI)中,标准单位面积为平方米(平方米),面积为一米长的正方形面积。单位...

求QQ空间关于生日快乐的代码
1. [\/M][ftc=#000000] [M] [ftc=#cc0099][ftc=#00a650][fts=5][ftf=wingdings]|[\/ft][\/ft][\/M][ftc=#000000] [M] [ftc=#cc0099][ftc=#00a650][fts=5][ftf=wingdings]|[\/ft][\/ft][ftc=#ffffff][fts=5][ftf=wingdings]|[\/ft][\/ft][ftc=#ef6ea8][fts=5][ftf=...

蓝屏代码是什么请问0x0000000A(0x000000C4,0x0000001C,0x00000000,0x80...
>>蓝屏代码0x000000D1 4.Windows XP SP2漏洞蓝屏 这个漏洞曾在2004年12月份报道过,它同时会影响到...HP于近日公布了一个解决方法,很简单,只要更改一个文件名即可,简而言之就是4步: 1. 启动计算机时,...[ H K E Y _ L O C A L _ M A C H I N E \\ S Y S T E M\\CurrentControlSet\\...

蓝屏代码0*0000004E(0*00000007,0*0000CD2C,000000001,0*0000000...
关于人们找不到IDE这项的问题,因为很多主板标明这项的措辞不太一样 有些写着AHCI和Compatibility,这个AHCI就等于是SATA模式,Compatibility相当于IDE模式。如果您的操作系统使用了一段时间了,突然有一天出现这个问题了,那么对不起,病毒造成的,开机按F8,选择最后一次正确的配置,恢复不到正常模式的话那么...

win 7安装打印机驱动报错0x000000c1
错误0x000000c1,驱动程序不是win32位版本的。重新下载WIN32位版本的驱动程序,重新驱动。1.驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常...

我的s|M卡p|N是多少,pUk码是多少
为保护您的使用安全,联通SIM卡采用PIN码和PUK码保护。当PIN码输错3次后,SIM卡会自动上锁,手机提示“SIM卡已锁”。SIM卡被锁后,需要输入PUK才能解锁,您可登录手机营业厅点击“我的联通”>“安全中心”>“我的PUK码”,即可查询PUK码。温馨提示:1、PIN码的初始密码是1234,如PUK码连续输错10...

鲅鱼圈区13160208235: MD5码是什么?MD5码是什么?
闵胆那宁: MD5(全称是message-digest algorithm 5)的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”为一种保密的格式.它的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改.通俗地说MD5码就是个验证码,就像我们的个人身份证一样,每个人的都是不一样的.MD5码是每个文件的唯一校验码(MD5不区分大小写,但由于MD5码有128位之多,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的),凭借此特性常被用于密码的加密存储、数字签名及文件完整性验证等功能.

鲅鱼圈区13160208235: 关于MD5码听说一个很大的文件,即时只有一点改变,MD5码也肯定
闵胆那宁: 一个中国科学家已经把MD5给破解了,她当时做的论文得出的结论是,一组信息都会单独生成一组MD5码.但是,二组不同的信息可能会生成同一组MD5码.机率是有的,可是一般可以忽略不记,所以你不用多想.

鲅鱼圈区13160208235: MD5是什么东西 -
闵胆那宁: 文件签名.MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统.每个文件都可以用MD5验证程序算出一个固定的MD5码来.软件作者往往会事先计算出他的程序...

鲅鱼圈区13160208235: 如何检验MD5码 -
闵胆那宁: 关于MD5码的检验给你一个相关文章,可以借鉴 14款MD5校验工具大合集下载 1、什么昰MD5码? MD5码昰message-digest algorithm 5(信息-摘要算法)啲缩写,被广泛用于加密和解密技术下,它可以说昰文件啲“数字指纹”. 任何壹个文...

鲅鱼圈区13160208235: MD5码在系统安装有什么作用 具体如何使用?
闵胆那宁:MD5码在系统安装过程中是没用的,它的作用是判断网上下过来的系统是否被人动过手脚,可以使用一些软件查出下过来的系统的MD5,在跟网上的对比,即可知道是不是没被修改过的系统

鲅鱼圈区13160208235: 在Oracle数据库中怎么实现明白储存,如何用MD5或者其他方法来实现,求详细解答,急急急..... -
闵胆那宁: //MD5加密函数 select MD5('密码');//PASSWORD加密函数 select PASSWORD('密码');-- 以上语句,可以直接执行查看效果

鲅鱼圈区13160208235: mysql 2008 r2 里面的加密是 MD5吗? -
闵胆那宁: mysql 密码默认MD5加密的 字段类型:char(32) 用法: insert into table(password) values(MD5('000000')); 例子 mysql> create table tc(id int auto_increment not null primary key,password char( 32) not null); Query OK, 0 rows affected...

鲅鱼圈区13160208235: 关于MD5加密算法 -
闵胆那宁: MD5并不是一种加密算法,而是hash函数算法,hash函数与加密算法的区别在于:第一,前者可以不用密钥,后者必须使用密钥;第二,前者不能倒回去,就是说由计算结果不能得出原先的明文,而后者必须能倒回去;第三,前者输入与输出长度不同,且输出长度明显小于输入长度,因此又称为消息摘要,后者一般输入与输出长度相同.下面说一下暴力破解MD5的问题,由于MD5是消息摘要算法,不同的输入可以产生相同的输出,因此反过来查是无法得到唯一确定的原码的.另外,从理论上讲,MD5的输入可以有无限多个.

鲅鱼圈区13160208235: 电脑开机蓝屏,代码0*000000A5什么原因? -
闵胆那宁: 出现这种情况,原因比较多,可以尝试以下方法解决: 1 、电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用360 卫士 、金山卫士等软、件,清理垃圾,查杀恶意软件,就可能解决.实在不行,重装,还原过系统,可以解决软件引起的问题.2、如果不能进入系统,可以开机后 到系统选择那里 按f8 选 起作用的最后一次正确配置和安全模式,可能可以进入系统.3、最近电脑中毒、安装了不稳定的软件、等,建议全盘杀毒,卸了那个引发问题的软件,重新安装其他 版本,就可能解决. 再不行,重新装过系统就可以了.

鲅鱼圈区13160208235: 我在网上下载文件时,验证MD5码只看前五个字符,那么我下载的文件不是我想要文件的几率是多少?
闵胆那宁: 只有前5个字符对的上?百分百不是你想要下载的文件了.MD5值不一样只能说明这个文件被修改过或者是下载错了. MD5效验看前五个是没有用的.要全都相同,才证明有效.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网