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

Programma C++ per verificare la forza della password

Dato un input di stringa che contiene i caratteri della password, il compito è di controllare la forza della password.

La forza della password è quando si dice se la password è facile da indovinare o può essere violata. La forza dovrebbe variare da debole, media a forte. Per controllare la forza, dobbiamo verificare i seguenti punti:

  • La lunghezza della password deve essere almeno di 8 caratteri.

  • Deve contenere 1 lettera minuscola.

  • Deve contenere 1 lettera maiuscola

  • Deve contenere un numero

  • Deve contenere un carattere speciale, ad esempio: !@#$%^&*()> <, .+ =-

Come una password “w3codebox” è facile da indovinare, possiamo affermare che la password fornita “debole” contiene solo lettere minuscole, mentre la password “w3codebox @ 863!” ha sia lettere maiuscole che minuscole, numeri e caratteri speciali, è robusta e la lunghezza è maggiore di 8 caratteri, quindi soddisfa tutte le condizioni per rendere la password più forte.

Se alcune password soddisfano più della metà delle caratteristiche di una password forte, allora considereremo la password come media. Come la password “w3codebox12”, sarà considerata di media difficoltà perché contiene lettere minuscole, un numero e la lunghezza è maggiore di 8 caratteri.

Esempio

Input: w3codebox!@12
Output: Forza della password: -Forte
Spiegazione: La password ha 1 lettera minuscola, 1 lettera maiuscola, 1 carattere speciale, più di 8 caratteri di lunghezza e un numero, quindi la password è forte.
Input: w3codebox
Output: Forza della password: -Debole

Il metodo che useremo per risolvere il problema dato-

  • Eseguire la stringa come password.

  • Controllare se la password contiene tutti i fattori necessari per determinare la forza della password.

  • Stampare la forza della password in base ai fattori.

Algoritmo

Inizia
   Passo 1 ⇒ In funzione void printStrongNess(string& input)
      Dichiarare ed inizializzare n = input.length()
      Dichiarare bool hasLower = false, hasUpper = false
      Dichiara bool hasDigit = false, specialChar = false
      Dichiara string normalChars = "abcdefghijklmnopqrstu"
      "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 \"
      Ciclo per i = 0 e i < n e i++
         Se (islower(input[i]))
            Imposta hasLower = true
         Se (isupper(input[i]))
            Imposta hasUpper = true
         Se (isdigit(input[i]))
            Imposta hasDigit = true
            Imposta size_t special = input.find_first_not_of(normalChars)
         Se (special != string::npos)
            Imposta specialChar = true
      Fine ciclo
      Stampa "Forza della password:-"
      Se (hasLower && hasUpper && hasDigit &&
         specialChar && (n >= 8)
         Stampa "Forte"
      else if ((hasLower || hasUpper) &&
            specialChar && (n >= 6)
         Stampa "Medio"
      else
         print "Debole"
   Passo 2 ⇒ In funzione int main() Declare e inizializza input = "w3codebox!@12"
      printStrength(input)
Stop

Esempio

#include <iostream>
using namespace std;
void printStrength(string& input) {
   int n = input.length();
   //Controlla le lettere minuscole nella stringa
   bool hasLower = false, hasUpper = false;
   bool hasDigit = false, specialChar = false;
   string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 \";
   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;
   }
   //Forza della password
   cout << "Forza della password:-";
   if (hasLower && hasUpper && hasDigit &&
      specialChar && (n >= 8)
      cout << "Forte" << endl;
   else if ((hasLower || hasUpper) &&
      specialChar && (n >= 6)
      cout << "Moderata" << endl;
   else
      cout << "Debole" << endl;
}
int main() {
   string input = "w3codebox!@12";
   printStrongNess(input);
   return 0;
}

Risultato di output

Forza della password: - Moderata