用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 span.

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

以上是 用C ++检查密码强度的程序 的全部内容, 来源链接: utcz.com/z/338482.html

回到顶部