Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 비밀번호의 강도를 확인하는 프로그램

<시간/>

암호 문자를 포함하는 문자열 입력이 주어지면 작업은 암호의 강도를 확인하는 것입니다.

암호의 강점은 암호가 쉽게 추측되거나 금이 간다는 것을 말할 때입니다. 강도는 약함, 보통 및 강함에서 다양해야 합니다. 강도를 확인하려면 다음 사항을 확인해야 합니다. -

  • 비밀번호는 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