【low向】注册用户时密码强度的判定

    很闲,看到某公司一道招聘笔试题目是写一段判断密码强度的代码。

    然后半个下午就用VC6码了这么个东西..... 没什么技术含量,大佬勿喷.....


#include <stdio.h>
#include <string.h>


char username[20]; //用户名
char password[20],password2[20]; //密码,确认密码


void inputpassword() //输入密码函数
{
char i;
for(i=0;i<20;i++)
{
password[i]=0;
password2[i]=0;
}
printf("请输入密码:");
scanf("%s",password);
printf("请再输入一次:");
scanf("%s",password2);
}


char user_pass() //判断用户名和密码是否相同
{
char i;
if(strlen(password)!=strlen(username))
return 0;
else
{
for(i=0;i<sizeof(username)-1;i++)
{
if(password[i]!=username[i])
{
return 0;
}
if(i==sizeof(username)-2)
{
return 1;
}
}
}
return 0;
}


char scan_pass() //密码字符种类数扫描
{
char i,lei=0,fu=0,shu=0,dazi=0,xzi=0;
for(i=0;i<sizeof(password)-1;i++)
{
if(((32<=password[i]&&password[i]<=47)||(58<=password[i]&&password[i]<=64)||(91<=password[i]&&password[i]<=96)||(123<=password[i]&&password[i]<=127))&&fu==0)
{
lei++;
fu=1;
}
else if((48<=password[i]&&password[i]<=57)&&shu==0)
{
lei++;
shu=1;
}
else if((65<=password[i]&&password[i]<=90)&&dazi==0)
{
lei++;
dazi=1;
}
else if((97<=password[i]&&password[i]<=122)&&xzi==0)
{
lei++;
xzi=1;
}
}
return lei;
}


void main()
{
char size,i,n=1,length,chong,lei;
int strong;
while(1) //输入用户名
{
printf("请输入用户名:");
scanf("%s",username);
if(strlen(username)<8)
printf("输入的用户名太短!(长度>=8)\n");
else
break;
}
printf("您输入的用户名为:%s\n",username);
while(n) //输入密码
{
inputpassword();
size=sizeof(password);
if(strlen(password)!=strlen(password2))
{
printf("输入有误,请重新输入\n");
}
else
{
for(i=0;i<size-1;i++)
{
if(password[i]!=password2[i])
{
printf("输入有误,请重新输入\n");
break;
}
if(i==size-2)
{
n=0;
}
}
}
}
length=strlen(password);
chong=user_pass();
lei=scan_pass();


//判断密码强度
if(length<8||chong==1)
strong=0;
else if(length>=8&&chong==0&&lei<=2)
strong=1;
else if(length>=8&&chong==0&&lei>2)
strong=2;


//printf("lei:%d\n",lei);
printf("您的密码强度为:%d\n",strong+1);
}

猜你喜欢

转载自blog.csdn.net/qq_26664187/article/details/79729435