穷举算法 编写一个暴力破解的程序,测试破解一个由数字构成的6位密码需要多长时间(穷举法破解6位密码)

2023-03-22 11:11:47 听风 思思

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秒

c语言:输入六位数字密码作为破解目标,用穷举法编程,输出破解成功是第几次

破解成功是第几次关键是看算法怎么做,从左到右穷举和从右到左穷举结果互补

#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次可以破解。