Đư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