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