English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
给定包含密码字符的字符串输入,任务是检查密码的强度。
密码的强度是当您告诉您密码是容易猜到还是被破解时。强度应从弱,中等和强到不同。要检查强度,我们必须检查以下几点:
密码长度必须至少为8caracteres.
它必须包含1小写字母。
它必须包含1大写字母
它必须包含一个数字
它必须包含一个特殊字符,例如:!@#$%^&*()> <,。+ =-
就像有一个密码“ w3codebox”很容易猜到一样,因此我们可以断定他给出的密码“弱”,因为它只包含小写字符,而密码“ w3codebox @ 863!” 既具有大写和小写字母,数字和特殊字符,又具有强壮性,并且长度大于8caracteres, por lo tanto, cumple con todas las condiciones que hacen que la contraseña sea más fuerte.
Si algunas contraseñas satisfacen más de la mitad de las características de una contraseña fuerte, entonces consideraremos que la contraseña es media. Como la contraseña "w3codebox12como, se considerará de nivel medio, porque contiene minúsculas, un dígito y una longitud mayor que8caracteres.
Entrada: w3codebox!@12 Salida: Fuerza de la contraseña:-Fuerte Explicación: La contraseña tiene 1 minúscula, 1 maysúscula, 1 carácter especial, más de 8 caracteres largos y un dígito, por lo tanto, la contraseña es fuerte. Entrada: w3codebox Salida: Fuerza de la contraseña:-Débil
El método que utilizaremos para resolver el problema dado-
Salida de la cadena como contraseña.
Verificar si la contraseña contiene todos los factores que pueden determinar la fuerza de la contraseña.
Imprimir la fuerza de la contraseña según los factores.
Inicio Paso 1 ⇒ En la función void printStrongNess(string& input) Declarar e inicializar n = input.length() Declarar bool hasLower = false, hasUpper = false Declarar bool hasDigit = false, specialChar = false Declarar string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"1234567890 " Bucle para i = 0 y i < n y i++ Si (islower(input[i])) Establecer hasLower = true Si (isupper(input[i])) Establecer hasUpper = true Si (isdigit(input[i])) Establecer hasDigit = true Establecer size_t special = input.find_first_not_of(normalChars) Si (special != string::npos) Establecer specialChar = true Final del bucle Imprimir "Fuerte de la contraseña:"-" Si (hasLower && hasUpper && hasDigit && specialChar && (n >= 8)) Imprimir "Fuerte" else if ((hasLower || hasUpper) && specialChar && (n >= 6)) Imprimir "Moderado" else print "Débil" Paso 2 ⇒ En la función int main() Declare y inicialice input = "w"3codebox!@12" printStrongNess(input) Detener
#include <iostream> using namespace std; void printStrongNess(string& input) { int n = input.length(); //Revisar las letras minúsculas de la cadena bool hasLower = false, hasUpper = false; bool hasDigit = false, specialChar = false; string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"1234567890 ";}} for (int i = 0; i < n; i++) { if (islower(input[i])) hasLower = true; if (isupper(input[i])) hasUpper = true; if (isdigit(input[i])) hasDigit = true; size_t special = input.find_first_not_of(normalChars); if (special != string::npos) specialChar = true; } //密码强度 cout << "Strength of password:"-"; if (hasLower && hasUpper && hasDigit && specialChar && (n >= 8)) cout << "Strong" << endl; else if ((hasLower || hasUpper) && specialChar && (n >= 6)) cout << "Moderate" << endl; else cout << "Weak" << endl; } int main() { string input = "w3codebox!@12"; printStrongNess(input); return 0; }
输出结果
Strength of password:-Moderate