一个两位纯数字密码破解程序怎么编,用C语言

作者&投稿:孛败 (若有异议请与网页底部的电邮联系)
C语言怎么打一个输入数字密码登录的程序?~

可以定义两个字符数组;
一个存放正确密码;
另一个数组内的内容由用户输入;
调用strcmp函数,若返回值为0则说明两者完全相等;
列子:
char a[10]="4488" //保存正确密码
char b[10];
gets(b) //用户输入
if(strcmp(a,b)==0)
printf(" 匹配成功 ");
else
printf("匹配失败");

密码保存在文件中,从文件中读取密码,但是没做容错和异常处理,仅供参考

#include
#include

#define PSDLEN 6

void inputPsd(char *str) /*处理输入*/
{
int i;

for(i = 0; i < PSDLEN; i++)
{
while(1)
{
str[i] = getch();
if(str[i] == '\b') /*处理退格键*/
{
i--;
if(i < 0)
{
i = 0;
}
else
{
printf("\b \b");
}
continue;
}
else if(str[i] == '') /*处理回车键*/
{
continue;
}
else
{
printf("*");
break;
}
}
}
str[i] = '\0';
printf("
");
}

int checkFirst() /*检测是否是第一次使用*/
{
FILE *fp;
if((fp = fopen("psd.dat", "rb")) == NULL)
{
return 1;
}
fclose(fp);
return 0;
}

void firstUse() /*第一次使用 需要输入密码*/
{
FILE *fp;
int i;
char passwd[PSDLEN + 1];
char checkPsd[PSDLEN + 1];

if((fp = fopen("psd.dat", "wb")) == NULL)
{
printf("Creat password error!
");
exit(1);
}
while(1)
{
printf("Please input password:");
inputPsd(passwd);

printf("
Please input password again:");
inputPsd(checkPsd);

if(!strcmp(passwd, checkPsd))
{
break;
}
printf("
check password error!
");
}
fwrite(passwd, sizeof(char), PSDLEN, fp);
fclose(fp);
}

void login() /*核对密码,并登录*/
{
FILE *fp;
int i, num = 3;
char passwd[PSDLEN + 1];
char checkPsd[PSDLEN + 1];

if((fp = fopen("psd.dat", "rb")) == NULL)
{
puts("Open psd.dat error");
exit(1);
}
fread(passwd, sizeof(char), PSDLEN, fp);
fclose(fp);
passwd[PSDLEN] = '\0';

printf("Please input password to login");
while(num)
{
printf("you have %d chances to cry:
", num);
inputPsd(checkPsd);
if(!strcmp(passwd, checkPsd))
{
break;
}
puts("
password error,Please input again");
num--;
}
if(!num)
{
puts("Press any key to exit...");
getch();
exit(0);
}
else
{
puts("
--------
Welcome!
--------
");
}
}

void main()
{
if(checkFirst())
{
firstUse();
}
else
login();

getch();
}

1、数据范围小的密码可以使用穷举法。这里从00到99,当作字符来处理,需要两重循环。

2、例程:

char a,b,c='1',d='2'; //这里变量c,d表示密码的第一位和第二位。
char key[2];
for(a='0';a<='9';a++){
        for(b='0';b<='9';b++){
                key[0]=a;
                key[1]=b;        //这就是一个密码
                if(key[0]==c && key[1]==d) printf("密码是:%s",key);//找到密码并输出
        }
}


就是穷举咯
从00到99,应该是当作字符来处理把
套个两重循环
char a,b;
char key[2];
for(a='0';a<='9';a++){
for(b='0';b<='9';b++){

key[0]=a;
key[1]=b; //这就是一个密码

}
}

从00到99不断的进行尝试啊!
望采纳!

用穷举法,给你个思路:
for (i = 10; i <= 99; i++)
{
//在这里进行比较

}