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

برنامج C ++ لتحقق من قوة كلمة المرور

المهمة المقدمة هي فحص قوة كلمة المرور التي تحتوي على سلسلة من أحرف الإدخال.

قوة كلمة المرور هي عندما تخبرك إذا كانت كلمة المرور سهلة التنبؤ بها أم يمكن اختراقها. يجب أن تكون القوة من الضعيفة، المتوسطة والقوية إلى مختلفة. لفحص القوة، يجب علينا التحقق من النقاط التالية:

  • يجب أن يكون طول كلمة المرور على الأقل 8 أحرف

  • يجب أن تحتوي على حرف صغير

  • يجب أن تحتوي على حرف كبير

  • يجب أن تحتوي على رقم

  • يجب أن تحتوي على رمز خاص، مثل: !@#$%^&*()> <،.+=-

مثل كلمة المرور "w3codebox" التي يمكن التنبؤ بها بسهولة، لذا يمكننا القول بأنه يعطي كلمة المرور "ضعيف" لأنها تحتوي فقط على أحرف صغيرة، بينما تحتوي كلمة المرور "w3codebox @ 863!" على أحرف كبيرة وأحرف صغيرة وأرقام ورموز خاصة، وهي قوية وطولها أكثر من 8 أحرف، لذا تفي بجميع الشروط التي تجعل كلمة المرور أقوى.

إذا كان هناك بعض الكلمات المرور تmeet أكثر من نصف خصائص كلمة المرور القوية، فإننا سنعتبرها كلمة مرور متوسطة. مثل كلمة المرور "w3codebox12"، سيتم اعتبارها درجة متوسطة لأنها تحتوي على حرف صغير، رقم واحد وطول أكثر من 8 أحرف.

مثال

الإدخال: w3codebox!@12
الإخراج: قوة كلمة المرور: - قوية
التوضيح: كلمة المرور تحتوي على 1 حرف صغير، 1 حرف كبير، 1 رمز خاص، طول أكثر من 8 أحرف ويحتوي على رقم، لذا كلمة المرور قوية.
الإدخال: w3codebox
الإخراج: قوة كلمة المرور: - ضعيف

الطريقة التي سنستخدمها لحل المشكلة المقدمة.-

  • إخراج النص ككلمة مرور.

  • تحقق مما إذا كانت جميع العوامل يمكن استخدامها لتحديد قوة كلمة المرور.

  • طباعة قوة كلمة المرور بناءً على العوامل.

الخوارزمية

البداية
   الخطوة 1 ⇒ في وظيفة void طباعة قوة النسخة (النص& إدخال)
      تعلن و initialize ن = طول إدخال
      تعلنُ بول هاسلور = صحيح، هاسأبليور = صحيح
      اجعل bool hasDigit = false, specialChar = false
      اجعل string normalChars = "abcdefghijklmnopqrstu"
      "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "
      دورة للـ For i = 0 و i < n و i++
         إذا (islower(input[i]))
            اجعل hasLower = true
         إذا (isupper(input[i]))
            اجعل hasUpper = true
         إذا (isdigit(input[i]))
            اجعل hasDigit = true
            اجعل size_t special = input.find_first_not_of(normalChars)
         إذا (special != string::npos)
            اجعل specialChar = true
      انتهاء الدورة
      اطبع "قوة كلمة المرور:-"
      إذا (hasLower && hasUpper && hasDigit &&
         specialChar && (n >= 8)
         اطبع "قوي"
      else if ((hasLower || hasUpper) &&
            specialChar && (n >= 6)
         اطبع "متوسط"
      else
         print "Week"
   خطوة 2 ⇒ في الدالة int main() Declare and initialize input = "w3codebox!@12"
      printStrongNess(input)
توقف

مثال

#include <iostream>
using namespace std;
void printStrongNess(string& input) {
   int n = input.length();
   // تحقق من وجود الحروف الصغرى في النص
   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;
   }
   //قوة كلمة المرور
   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 = "w3codebox!@12";
   printStrongNess(input);
   return 0;
}

نتيجة الإخراج

قوة كلمة المرور:-متوسطة
أنت قد تعجبك