암호 문자를 포함하는 문자열 입력이 주어지면 작업은 암호의 강도를 확인하는 것입니다.
암호의 강점은 암호가 쉽게 추측되거나 금이 간다는 것을 말할 때입니다. 강도는 약함, 보통 및 강함에서 다양해야 합니다. 강도를 확인하려면 다음 사항을 확인해야 합니다. -
- 비밀번호는 8자 이상이어야 합니다.
- 소문자 알파벳 1개를 포함해야 합니다.
- 대문자 1개를 포함해야 합니다.
- 숫자를 포함해야 합니다.
- 다음과 같은 특수 문자를 포함해야 합니다. !@#$%^&*()><,.+=-
쉽게 추측할 수 있는 "tutorialspoint" 암호가 있는 것처럼 암호 "Tutorialspoint@863!"은 소문자만 포함하기 때문에 그가 지정한 암호가 "weak"이라고 말할 수 있습니다. 은 대소문자, 숫자, 특수문자를 모두 포함하여 8자 이상으로 강력하여 모든 조건을 만족하여 더 강력한 비밀번호를 만듭니다.
강력한 암호 특성의 절반 이상을 충족하는 암호가 있는 경우 암호를 보통으로 간주합니다. "tutorialspoint12" 암호와 마찬가지로 소문자, 숫자 및 길이가 8자 이상을 포함하므로 보통으로 간주됩니다.
예시
Input: tutoriAlspOint!@12 Output: Strength of password:-Strong Explanation: Password has 1 lowercase, 1 uppercase, 1 special character, more than 8 characters long and a digit, hence the password is strong. Input: tutorialspoint Output: Strength of password:-Weak
주어진 문제를 해결하기 위해 사용할 접근 방식 -
- 비밀번호에 대한 문자열 출력을 가져옵니다.
- 비밀번호의 강도를 판단하는 모든 요인에 대해 비밀번호를 확인하세요.
- 요인에 따라 비밀번호의 강도를 표시합니다.
알고리즘
Start Step 1 ⇒ In function void printStrongNess(string& input) Declare and initialize n = input.length() Declare bool hasLower = false, hasUpper = false Declare bool hasDigit = false, specialChar = false Declare string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 " Loop For i = 0 and i < n and i++ If (islower(input[i])) Set hasLower = true If (isupper(input[i])) Set hasUpper = true If (isdigit(input[i])) Set hasDigit = true Set size_t special = input.find_first_not_of(normalChars) If (special != string::npos) Set specialChar = true End Loop Print "Strength of password:-" If (hasLower && hasUpper && hasDigit && specialChar && (n >= 8)) Print "Strong" else if ((hasLower || hasUpper) && specialChar && (n >= 6)) Print "Moderate" else print "Weak" Step 2 ⇒ In function int main() Declare and initialize input = "tutorialspoint!@12" printStrongNess(input) Stop
예시
#include <iostream> using namespace std; void printStrongNess(string& input) { int n = input.length(); // Checking lower alphabet in string 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; } // Strength of password 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 = "tutorialspoint!@12"; printStrongNess(input); return 0; }
출력
Strength of password:-Moderate