6个字符:22.5亿个组合(无特殊字符)
1. 由每秒攻击站点 10000 次的 Web 程序:需要3.7周
2. 脱机使用高功率的服务器或者台式机(1000亿/秒):0.0224秒
3. 使用大规模的并行处理器集群(100兆亿/秒):0.0000224秒
6个字符:7.6万亿个组合(有特殊字符)
1. 由每秒攻击站点 10000 次的 Web 程序:需要2.4个世纪
2. 脱机使用高功率的服务器或者台式机(1000亿/秒):1.26分钟
3. 使用大规模的并行处理器集群(100兆亿/秒):0.0756秒
破解成功是第几次关键是看算法怎么做,从左到右穷举和从右到左穷举结果互补
#include stdio.h
#define For(i, flag) for(i = 0; i=9 flag==0; ++i)
int main()
{
int a[6];
int count = 1, flag = 0;
char password[7];
scanf("%s", password);
For(a[0], flag)
For(a[1], flag)
For(a[2], flag)
For(a[3], flag)
For(a[4], flag)
For(a[5], flag)
{
if(password[0]==a[0]+'0' password[1]==a[1]+'0' password[2]==a[2]+'0'
password[3]==a[3]+'0' password[4]==a[4]+'0' password[5]==a[5]+'0')
{
flag = 1;
break;
}
else
++count;
}
printf("%d", count);
return 0;
}
穷举法是最常见的密码破解方法。也就是一个一个地试。如比密码为123,穷举法从1位数0开始,一直到碰对为止。
一般来说,穷举法适用于6位以下纯数字密码,超过6位数或较复杂穷举法就很难了,即使可以,也需要很长时间。
一张银行卡的密码是六位数,如果用穷举法
一张银行卡的密码是6位数字,如果用穷举法最多尝试1000000次可以破解。