| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2996 人关注过本帖
标题:自己设置一个十位数密码,自己破解,程序能运行,就是不能输出破解后的密码
只看楼主 加入收藏
hongcheng_g
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-1-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
自己设置一个十位数密码,自己破解,程序能运行,就是不能输出破解后的密码
// 33333333333.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<windows.h>
#include<time.h>
using namespace std;


int _tmain()
{   char a[10];
    char b[10];
    srand((unsigned)time(0));
    for(int i=0;i<10;i++)
    {  a[i]=(char)((rand()%(130-32))+32+1);
    }
    for(int i=0;i<10;i++)
        cout<<a[i]<<"   ";
       cout <<endl;
    do{
    for(int i=0;i<10;i++)
        {
     b[i]=(char)((rand()%(130-32))+32+1);
        }
      
    }while( a[0]!=b[0]||a[1]!=b[1]||a[2]!=b[2]||a[3]!=b[3]
               ||a[4]!=b[4]||a[5]!=b[5]||a[6]!=b[6]||a[7]!=b[7]||a[8]!=b[8]||a[9]!=b[9]);
        for(int i=0;i<10;i++)
        cout<<b[i]<<"    ";
        cout<<endl;

    system ("pause");
    return 0;
}

2016-01-16 09:01
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:7 
难道你是用随机数做密码,又用随机数碰撞破解?这破解成功的可能性几乎为0,10个数全中比中双色球的几率小多了

能编个毛线衣吗?
2016-01-16 09:30
hongcheng_g
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-1-10
收藏
得分:0 
一个想法做个实验,我想把这个小程序完善一下,是不是电脑的随机数是个伪随机数,产生到一定个数后又循环
所以还需要在while()中加一个计数器,这个程序我写好了,但这个不带计数器的都运行不出结果来,看是不是C++有什么特殊的地方我不知道;
2016-01-16 09:37
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:7 
应该是进到那个while循环里面出不来了。你要想穷举的话,应该每动一位数进行一次对比。像这样十位数全部给出来了再来对比。可能永远没有结果。因为极有可能测试过的错密码又被N次重复,而未测试过的密码总是不被测到
2016-01-16 10:01
hongcheng_g
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2016-1-10
收藏
得分:0 
这个程序没问题,也不是像上面两个说的,它很快就会输出结果,只是结果只有先前的随机数十位密码
而没有破解的密码,把这个换为三位密码,就可以输出先前的和破解了的,程序本身没问题,可能是
C++不允许做这种暴力破解程序,上面说的每一位对一下,就没有破解的意义了,我是刚接触C++,什么都
不懂;
2016-01-16 12:41
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:7 
回复 5楼 hongcheng_g
从你的说法中,我大感觉之前两位的回答是正确的,3位数时,得出的结果的可能性比10位数的时候的可能性大很多,所以3位时能得到结果,可10位时一直在算密码,所以一直出不来最终破解的结果吧
2016-01-19 08:55
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
1. rand 生成的随机数是伪随机。
2. 你不知道它的一个周期有多少个随机数,然后是不是恰好是不是10的倍数。
3. 如果不是10的倍数的话,你要经过多个rand 的周期后才能对上。
4. 你的这一块代码 while 里的检测代码有多快的只能看编译器的能力了。
5. 4 楼的说法如果和楼主的代码挂勾来看的话是错的。
6. 把 while 改为 while(memcmp(a, b, 10)) 后编release 。跑个 1分钟左右后是可以出结果的。

迭代的是人,递归的是神。
2016-02-04 10:39
快速回复:自己设置一个十位数密码,自己破解,程序能运行,就是不能输出破解后的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073073 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved