用C ++检查密码强度的程序
给定包含密码字符的字符串输入,任务是检查密码的强度。
密码的强度是当您告诉您密码是容易猜到还是被破解时。强度应从弱,中等和强到不同。要检查强度,我们必须检查以下几点:
密码长度必须至少为8个字符。
它必须包含1小写字母。
它必须包含1大写字母
它必须包含一个数字
它必须包含一个特殊字符,例如:!@#$%^&*()><,。+=-
就像有一个密码“nhooo”很容易猜到一样,因此我们可以断定他给出的密码“弱”,因为它只包含小写字符,而密码“Nhooo@863!”既具有大写和小写字母,数字和特殊字符,又具有强壮性,并且长度大于8个字符,因此满足使密码更强的所有条件。
如果有一些密码满足强密码的一半以上的特征,那么我们将认为该密码是中等密码。就像密码“nhooo12”一样,它将被认为是中等程度的,因为包含小写字母,一个数字并且其长度大于8个字符。
示例
Input: nhooo!@12 Output:密码强度:-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: nhooo Output:密码强度:-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 = "nhooo!@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 = "nhooo!@12"; printStrongNess(input); return 0; }
输出结果
Strength of password:-Moderate