我试图制作一个算法来检查一个字符串中是否有大写、小写和数字,如果有它应该打印“强密码”,如果不是“弱密码”。但它似乎不起作用。
int main()
{
int i = 0;
char string1[100];
printf("Please enter password\n");
gets(string1);
if(strlen(stirng1) < 6)
{
printf("Password is too short\n");
}
if(islower(string1[i]) && isupper(string1[i]) && isdigit(string1[i]))
{
printf("Strong Password\n");
}
else
{
printf("Weak Password\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
bool hasUpper = false;
bool hasLower = false;
bool hasDigit = false;
for(int i =0; i < strlen(string1); ++i)
{
if( islower(string1[i]) )
hasLower = true;
if( isupper(string1[i]) )
hasUpper = true;
if( isdigit(string1[i]) )
hasDigit = true;
}
if(hasLower && hasUpper && hasDigit)
{
printf("Strong Password\n");
}
else
{
printf("Weak Password\n");
}
Run Code Online (Sandbox Code Playgroud)
请注意,虽然就弱密码或短密码向用户发出警告是很好的,但您永远不应将其作为一项要求。通过排除过多的密码,实际上可以让攻击者更容易进行暴力破解,因为他可以跳过那个。此外,太难记住的密码是不安全的,因为用户将被迫将其写下来并张贴到监视器上。另一件事是确保您可以正确处理所有字符,例如空格、制表符"或/. 如果用户希望" DROP TABLE 'users';正确处理它是您的工作。
密码强度是用户的责任,因为只有用户知道他是否会在您的系统中保留任何有价值的东西。
| 归档时间: |
|
| 查看次数: |
10584 次 |
| 最近记录: |