เมื่อป้อนสตริงที่มีอักขระรหัสผ่าน ภารกิจคือการตรวจสอบความเข้มงวดของรหัสผ่าน
ความแรงของรหัสผ่านคือเมื่อคุณบอกว่ารหัสผ่านนั้นเดาได้ง่ายหรือถูกถอดรหัส ความแรงควรแตกต่างจากอ่อนแอปานกลางและแข็งแกร่ง ในการตรวจสอบความแข็งแกร่ง เราต้องตรวจสอบประเด็นต่อไปนี้ −
- รหัสผ่านต้องมีความยาวอย่างน้อย 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