首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用循环破密码,该怎么处理

2012-02-28 
用循环破密码我想用一个循环破解一个12位内的密码(小于等于12位),每一位都有62种可能的情况,请大家帮忙想

用循环破密码
我想用一个循环破解一个12位内的密码(小于等于12位),每一位都有62种可能的情况,请大家帮忙想下这个循环怎么写??
for   i=1   to   12
password:
        for   m=1   to   62
                  pass_str   =   pass_str   +   value(m)
                  nkey   =   pass_str
                      if   nkey <> truepassword   then
                            goto   password
                      end   if
        next
next
msgbox   nkey

上面是我的思路,但好象还有问题,请大家帮我修改下。


[解决办法]
假设密码只有一位,则可能性有: 62~1=62
假设密码有二位,则可能性有:62~2=62*62
假设密码有三位,则可能性有:62~3=62*62*62




如果密码有12位,则可能性有:63~12 种[最多的情况]
.
.
.
而楼主所表达的意思是密码组合的可能性最多只有63*12种!
63*12与63~12相差甚远啊。。。。
[解决办法]
62^12 是现在的鸡鸡对付不了的复杂度, 用字典吧 ....

[解决办法]
char a[13];
a[12] = '\0 ';
for (a[0] = '0 ';a[0] <= '9 ';++a[0])
for (a[1] = '0 ';a[1] <= '9 ';++a[1])
…………
for (a[11] = '0 ';a[11] <= '9 ';++a[11])
if (!strcmp(a,truepassword))
printf( "true password found! ");

[解决办法]
试试这个呢?
#include <stdio.h>
#include <string.h>
#include <time.h>

char sym[12]={ 'a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g ', 'h ', 'i ', 'j ', 'k ', 'l '};
int status[12];

inline bool GetNextSym( )
{
status[0]++;
int carry = 0;
for ( int i=0; i <12; i++ )
{
if( carry+status[i]> 12 )
{
status[i]=1;
carry = 1;
}else
{
status[i]+=carry;
carry = 0;
break;
}
}
if( carry == 1 )
{
return false;
}
return true;
}


int main()
{
char cur[13];
memset(cur,0,13);
clock_t bg,ed;
bg=clock();
while( GetNextSym() )
{
for( int i=0; i <12; i++ )
{
if( status[i]==0)
{
break;
}else
{
cur[i]=sym[status[i]-1];
}
}
fprintf(stdout, "%s ",cur);
}
ed=clock();
fprintf(stdout, "Time:%f\n ", (double)(ed-bg)/CLOCKS_PER_SEC);
return 0;
}

[解决办法]
上面没看清题目,62的情况的话,就要......
char sym[62]={ 'a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g ', 'h ', 'i ', 'j ', 'k ', 'l ',.......};
int status[12];

inline bool GetNextSym( )
{
status[0]++;
int carry = 0;
for ( int i=0; i <12; i++ )
{
if( carry+status[i]> 62 )
{
status[i]=1;
carry = 1;
}else
{
status[i]+=carry;
carry = 0;
break;
}


}
if( carry == 1 )
{
return false;
}
return true;
}


[解决办法]
你要靠这种方法去破解人家的qq密码或者什么的,小心搞坏人家的服务器。
[解决办法]
62^12 ~= 64^12 ==2^6^12 ==2^72
假如你机器频率为32GHz(不可能),每Hz进行一次运算,既是2^5^30==2^35那么要进行2^42秒。。。。估计得上百年
[解决办法]
什么是完完整整的解决?
列举出所有密码还不行吗?
[解决办法]
如果用这种方法首先要求你的硬件超强
[解决办法]
暴力基本不可能
太多了
[解决办法]
记得一句话:现在的机器速度暴力破解是早晚的事!分布式!
[解决办法]
mark
[解决办法]
假设机器主频1G,一次试探占用20个机器周期(一般比这个大得多),需要4910万年。

就算你1万台机器来分布,也要4910年,况且谁的计算机能连续运行4900年?都换无数个朝代和政权了,你的计算机早成灰了。
[解决办法]
...很强大
[解决办法]
呵呵
人家只是要代码,管他算几年呢
[解决办法]
最坏情况下要那么多年,一般情况用不了这么多吧?

[解决办法]
最坏情况下要那么多年,一般情况用不了这么多吧?
一般情况是什么,那就平均一下,一半的时间。还是差距太大。
这个还仅仅是包括字母和数字,要是允许用标点什么的做密码,更庞大。所以暴力破解行不通吧。

热点排行