c语言: 检查密码的强度,密码最小为1个字符,最长为12个字符。规则为:长度小于等于6且只含有数字字符的强度为弱;长度超过10且同时包含数字、字母、和数字字母以外的字符为强;其它为中
时间: 2024-10-09 19:01:46 浏览: 39
在C语言中检查密码的强度,你可以通过编写一个函数来进行判断。以下是一个简单的示例,该函数接受一个字符串作为密码输入,并返回其强度:
```c
#include <stdio.h>
#include <ctype.h> // 使用ctype_h库中的isalnum()和isdigit()函数
// 定义密码强度枚举
typedef enum {
PASSWORD_WEAK,
PASSWORD_MEDIUM,
PASSWORD_STRONG
} PasswordStrength;
PasswordStrength check_password_strength(char* password) {
int length = strlen(password);
// 判断长度
if (length < 1 || length > 12) {
return PASSWORD_WEAK; // 长度错误,直接标记为弱
}
bool has_digit = false;
bool has_alpha = false;
bool has_special_char = false;
for (int i = 0; i < length; i++) {
char ch = password[i];
if (isdigit(ch)) { // 数字
has_digit = true;
} else if (isalpha(ch)) { // 字母
has_alpha = true;
if (!islower(ch) && !isupper(ch)) { // 区分大小写字母
has_special_char = true;
}
} else if (!isspace(ch) && !ispunct(ch)) { // 其他特殊字符(非空格和标点)
has_special_char = true;
}
}
// 根据规则判断强度
if (length <= 6 && has_digit) {
return PASSWORD_WEAK;
} else if (length > 10 && (has_digit && has_alpha && has_special_char)) {
return PASSWORD_STRONG;
} else {
return PASSWORD_MEDIUM;
}
}
int main() {
char password[] = "Password1";
PasswordStrength strength = check_password_strength(password);
switch (strength) {
case PASSWORD_WEAK:
printf("密码强度:弱\n");
break;
case PASSWORD_MEDIUM:
printf("密码强度:中\n");
break;
case PASSWORD_STRONG:
printf("密码强度:强\n");
break;
}
return 0;
}
```
阅读全文