কম্পিউটার টিউটোরিয়াল

সি++ প্রোগ্রাম: পাসওয়ার্ডের শক্তি যাচাই


পাসওয়ার্ড ক্যারেক্টার ধারণকারী একটি স্ট্রিং ইনপুট দেওয়া থাকলে, পাসওয়ার্ডের শক্তি (strength) যাচাই করা এই প্রোগ্রামের কাজ।

পাসওয়ার্ডের শক্তি বলতে বোঝায় পাসওয়ার্ডটি কতটুকু সহজে অনুমান করা বা ভাঙা যায়। শক্তি তিন ধরনের হতে পারে: দুর্বল (weak), মাঝপথ (average/Moderate) এবং শক্তিশালী (strong)। শক্তি যাচাই করার জন্য নিচের শর্তগুলো পূরণ করতে হবে:

  • পাসওয়ার্ড কমপক্ষে ৮ ক্যারেক্টার লম্বা হতে হবে।
  • কমপক্ষে ১টি ছোট হাতের অক্ষর (lowercase) থাকতে হবে।
  • কমপক্ষে ১টি বড় হাতের অক্ষর (uppercase) থাকতে হবে।
  • কমপক্ষে ১টি অঙ্ক (digit) থাকতে হবে।
  • কমপক্ষে ১টি বিশেষ ক্যারেক্টার থাকতে হবে: !@#$%^&*()><,.+=-

যেমন "tutorialspoint" পাসওয়ার্ডটি সহজে অনুমান করা যায়, তাই এটি "দুর্বল" (weak), কারণ এতে শুধু ছোট হাতের অক্ষর রয়েছে। অন্যদিকে "Tutorialspoint@863!" পাসওয়ার্ডটি "শক্তিশালী" (strong), কারণ এতে বড় ও ছোট হাতের অক্ষর, অঙ্ক, বিশেষ ক্যারেক্টার রয়েছে এবং দৈর্ঘ্য ৮-এর চেয়ে বেশি।

যদি কোনো পাসওয়ার্ড শক্তিশালী পাসওয়ার্ডের বৈশিষ্ট্যের অর্ধেকের বেশি পূরণ করে, তবে সেটি "মাঝপথ" (Moderate) বিবেচিত হবে। যেমন "tutorialspoint12" - এতে ছোট হাতের অক্ষর, অঙ্ক রয়েছে এবং দৈর্ঘ্য ৮-এর চেয়ে বেশি, তাই এটি মাঝপথ।

উদাহরণ

Input: tutoriAlspOint!@12 Output: Strength of password:-Strong Explanation: পাসওয়ার্ডে ১টি ছোট হাতের অক্ষর, ১টি বড় হাতের অক্ষর, ১টি বিশেষ ক্যারেক্টার, ৮-এর চেয়ে বেশি দৈর্ঘ্য এবং ১টি অঙ্ক রয়েছে, তাই পাসওয়ার্ডটি শক্তিশালী। Input: tutorialspoint Output: Strength of password:-Weak

সমস্যা সমাধানের পদ্ধতি:

  • পাসওয়ার্ডের জন্য স্ট্রিং ইনপুট নেওয়া
  • পাসওয়ার্ডের শক্তি নির্ণয়ের সব ফ্যাক্টর যাচাই করা
  • ফ্যাক্টর অনুযায়ী পাসওয়ার্ডের শক্তি প্রিন্ট করা

অ্যালগরিদম

Start    Step 1 → void printStrongNess(string& input) ফাংশনে       n = input.length() ঘোষণা ও ইনিশিয়ালাইজ       hasLower = false, hasUpper = false ঘোষণা       hasDigit = false, specialChar = false ঘোষণা       normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 " ঘোষণা       Loop For i = 0 to n-1          If (islower(input[i]))             hasLower = true সেট          If (isupper(input[i]))             hasUpper = true সেট          If (isdigit(input[i]))             hasDigit = true সেট           special = input.find_first_not_of(normalChars) সেট          If (special != string::npos)             specialChar = true সেট       End Loop       "Strength of password:-" প্রিন্ট       If (hasLower && hasUpper && hasDigit && specialChar && (n >= 8))          "Strong" প্রিন্ট       else if ((hasLower || hasUpper) && specialChar && (n >= 6))          "Moderate" প্রিন্ট       else          "Weak" প্রিন্ট    Step 2 → main() ফাংশনে       input = "tutorialspoint!@12" ঘোষণা ও ইনিশিয়ালাইজ       printStrongNess(input) কল Stop

উদাহরণ

#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 = "tutorialspoint!@12";    printStrongNess(input);    return 0; }

আউটপুট

Strength of password:-Moderate

  1. C++-এ ম্যাট্রিক্স লোয়ার ট্রায়্যাঙ্গুলার কিনা তা যাচাই করার প্রোগ্রাম

  2. C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  3. C++-এ আইডেমপটেন্ট ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  4. C++-এ ডায়াগোনাল এবং স্ক্যালার ম্যাট্রিক্স যাচাই করার প্রোগ্রাম