Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมตรวจสอบความแรงของรหัสผ่านในภาษา C++


เมื่อป้อนสตริงที่มีอักขระรหัสผ่าน ภารกิจคือการตรวจสอบความเข้มงวดของรหัสผ่าน

ความแรงของรหัสผ่านคือเมื่อคุณบอกว่ารหัสผ่านนั้นเดาได้ง่ายหรือถูกถอดรหัส ความแรงควรแตกต่างจากอ่อนแอปานกลางและแข็งแกร่ง ในการตรวจสอบความแข็งแกร่ง เราต้องตรวจสอบประเด็นต่อไปนี้ −

  • รหัสผ่านต้องมีความยาวอย่างน้อย 8 อักขระ
  • ต้องมีอักษรตัวพิมพ์เล็ก 1 ตัว
  • ต้องมีตัวพิมพ์ใหญ่ 1 ตัว
  • ต้องมีตัวเลข
  • ต้องมีอักขระพิเศษ เช่น :!@#$%^&*()><,.+=-

เช่นเดียวกับมีรหัสผ่าน “tutorialspoint” ที่เดาได้ง่าย ดังนั้นเราสามารถพูดได้ว่ารหัสผ่านของเขานั้น “อ่อนแอ” เนื่องจากมีเฉพาะตัวพิมพ์เล็ก ในขณะที่รหัสผ่าน “Tutorialspoint@863!” มีความแข็งแกร่งทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวเลข และอักขระพิเศษ และมีความยาวมากกว่า 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