Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình kiểm tra độ mạnh của mật khẩu trong C ++

Đưa ra một đầu vào chuỗi chứa các ký tự mật khẩu, nhiệm vụ là kiểm tra độ mạnh của mật khẩu.

Điểm mạnh của mật khẩu là khi bạn nói rằng mật khẩu đó có dễ đoán hay bị bẻ khóa hay không. Sức mạnh nên thay đổi từ yếu, trung bình và mạnh. Để kiểm tra độ bền, chúng ta phải kiểm tra các điểm sau -

  • Mật khẩu phải dài ít nhất 8 ký tự.
  • Nó phải chứa 1 bảng chữ cái viết thường.
  • Nó phải chứa 1 bảng chữ cái viết hoa
  • Nó phải chứa một chữ số
  • Nó phải chứa một ký tự đặc biệt như:! @ # $% ^ &* ()> <,. + =-

Giống như có một mật khẩu “hướng dẫn viên điểm” rất dễ đoán vì vậy chúng ta có thể khẳng định rằng mật khẩu mà anh ta đưa ra là “yếu” vì nó chỉ chứa các ký tự chữ thường, trong khi mật khẩu “Tutorialspoint @ 863!” mạnh vì có cả chữ hoa và chữ thường, một chữ số và một ký tự đặc biệt và dài hơn 8 ký tự, do đó đáp ứng tất cả các điều kiện để làm cho mật khẩu mạnh hơn.

Nếu có một số mật khẩu đáp ứng hơn một nửa đặc điểm của mật khẩu mạnh, thì chúng tôi sẽ coi mật khẩu đó là vừa phải. Giống như mật khẩu “tutorialspoint12”, nó sẽ được coi là vừa phải vì chứa chữ thường, một chữ số và độ dài của nó lớn hơn 8 ký tự.

Ví dụ

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

Phương pháp tiếp cận mà chúng tôi sẽ sử dụng để giải quyết vấn đề đã cho -

  • Lấy đầu ra chuỗi cho mật khẩu.
  • Kiểm tra mật khẩu để tìm tất cả các yếu tố chịu trách nhiệm đánh giá độ mạnh của mật khẩu.
  • Theo các yếu tố in độ mạnh của mật khẩu.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Strength of password:-Moderate