English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Usando C ++Programa para verificar la fuerza de la contraseña

给定包含密码字符的字符串输入,任务是检查密码的强度。

密码的强度是当您告诉您密码是容易猜到还是被破解时。强度应从弱,中等和强到不同。要检查强度,我们必须检查以下几点:

  • 密码长度必须至少为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.

Ejemplo

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.

Algoritmo

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

Ejemplo

#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