强密码建议程序


每年5月7日,全球各组织都会提醒用户强密码的重要性。根据科技巨头谷歌的数据;

  • 24% 的最终用户使用“password”或“Qwerty”作为其帐户密码。

  • 而他们所有用户中只有 34% 定期更改其帐户密码。

在当今这个科技发展迅速的世界里,每次登录尝试都可能遭到网络犯罪分子的攻击。但如今仍有许多人继续使用弱密码来保护其工作和个人帐户。

在这里,我们将讨论并检查创建的密码是极弱、弱、中等、强还是极强。为此,我们将根据算法检查密码创建标准。在今天的文章中,我们将学习如何使用 C++ 代码创建强密码建议程序。

如何创建强密码 - 算法

这是一个强密码的一般算法。它可以帮助开发人员在 C++ 环境中开发密码建议系统并找到其密码的特定标准。

  • 步骤 1 − 开始

  • 步骤 2 − 理想密码的长度至少应为八个字符。

  • 步骤 3 − 必须包含至少一个数字字符。

  • 步骤 4 − 必须包含至少一个小写字符。[例如:a、b、c.....、z]

  • 步骤 5 − 必须包含至少一个大写字符。[例如:A、B、C......、Z]

  • 步骤 6 − 必须包含至少一个特殊字符。[例如:!@#$%^&*()-+]

  • 步骤 7 − 结束

创建强密码建议程序 - 语法

switch (k) {
   case 1:
      if ((count_alphabet == 7) && (count_number == 0 || count_ALPHABET == 0 || count_ALPHABET == 7 || count_s_symbol == 0))
         break;
      key = getKey();
      password = password + alphabet[key];
      count_alphabet++;
      count++;
         break;

   case 2:            
      if ((count_ALPHABET == 7) && (count_number == 0 || count_alphabet == 0 || count_alphabet == 5 || count_s_symbol == 0))
            break;
         key = getKey();
         password = password + ALPHABET[key];
         count_ALPHABET++;
         count++;
            break;
   case 3:
      if ((count_number == 7) && (count_alphabet == 0 || count_alphabet == 1 || count_ALPHABET == 3 || count_ALPHABET == 0 || count_s_symbol == 0))
            break;
         key = getKey();           
         key = key % 10;          
         password = password + number[key];
         count_number++;
         count++;
            break;

   case 4:
      if ((count_s_symbol == 1) && (count_alphabet == 0 || count_alphabet == 1 || count_ALPHABET == 0 || count_ALPHABET == 1 || count_number == 0))
            break;
         key = getKey();
         key = key % 6;
         password = password + s_symbol[key];

         count_s_symbol++;
         count++;
            break;
   }
   cout << "\n-----------------------------\n";
   cout << "        Enter The Password             \n";
   cout << "------------------------------\n\n";
   cout << " " << password add here;
   cout << "\n\n Press any key continue \n";
   getchar();
}

在此语法中,条件检查理想密码的最低要求。我们将所有可能的条件分成四种情况,分别检查字母、数字和特殊符号字符是否已根据最低要求满足。然后检查剩余的其他字符,并结束。

方法 – 创建强密码建议程序

  • 方法 1 − 创建强密码建议程序环境

  • 方法 2 − 检查密码是强、弱还是中等

  • 方法 3 − 根据条件检查密码

创建强密码建议程序环境

在此 C++ 构建代码中,系统将检查输入数据(密码)的强度。它将扫描输入以查找所有提到的理想密码标准。如果所有标准都匹配,则它是一个理想密码。否则,如果输入中缺少任何字符,它将返回一些随机生成的密码。

示例 1

#include <bits/stdc++.h>
using namespace std;
string add_more_char(string str, int need){
   int pos = 0;
   string low_case = "abcdefghijklmno";
   for (int a = 0; a < need; a++) {
      pos = rand() % str.length();
      str.insert(pos, 1, low_case[rand() % 26]);
   }
   return str;
}
string suggester(int m, int o, int a, int d, string str) {
   string num = "0123456789";
   string low_case = "abcdefghijklmno";
   string up_case = "ABCDEFGHIJKLMNO";
   string spl_char = "@#$_()!*&%#+-=.`";
   int pos = 0;
   if (m == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, low_case[rand() % 26]);
   }
   if (o == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, up_case[rand() % 26]);
   }
   if (a == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, num[rand() % 10]);
   }
   if (d == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, spl_char[rand() % 7]);
   }
   return str;
}
void generate_password(int n, string p){
   int l = 0, u = 0, d = 0, s = 0, need = 0;
   string suggest;
   for (int j = 0; j < n; j++) {
      if (p[j] >= 97 && p[j] <= 122)
         l = 1;
      else if (p[j] >= 65 && p[j] <= 90)
         u = 1;
      else if (p[j] >= 48 && p[j] <= 57)
         d = 1;
      else
         s = 1;
   }
   if ((l + u + d + s) == 4) {
      cout << "Hurra! Your Passcode Is Strong, Go Ahead!" << endl;
      return;
   }
   else
   cout << "Suggested password As Per The Input. Pick One For You! " << endl;
   for (int i = 0; i < 10; i++) {
      suggest = suggester(l, u, d, s, p);
      need = 8 - suggest.length();
      if (need > 0)
         suggest = add_more_char(suggest, need);
      cout << suggest << endl;
   }
}
int main(){
   string input_string = "abonirudra@1607";
   srand(time(NULL));
   generate_password(input_string.length(), input_string);
   return 0;
}

输出

Suggested password As Per The Input. Pick One For You! 
abonirudGra@1607
abConirudra@1607
abonirudra@1E607
abonirudra@16A07
abonirudra@160L7
abNonirudra@1607
aNbonirudra@1607
abonirDudra@1607
aboniruFdra@1607
abonirNudra@1607

检查密码是强、弱还是中等

根据提到的算法和 C++ 构建代码;编码的字符串检查输入强度。当所有条件都满足时,整个方法返回“强”作为输出。如果仅满足前三个步骤且密码长度至少为八个字符,则将返回“中等”。

示例 2

#include <bits/stdc++.h>
using namespace std;
void printStrongNess(string& input) {
   int n = input.length();
   bool hasLower = false, hasUpper = false;
   bool hasDigit = false, specialChar = false;
   string normalChars = "abcdefghijklmnopqrstu"
   "vwxyzABCDEFGHIJKL023456789 ";
   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 = "Abonirudra@22052023";
   printStrongNess(input);
   return 0;
}

输出

Strength of password:-Strong

根据条件检查密码

在此代码中,我们将对特定密码执行验证操作。以下是具体步骤:

  • 从用户那里获取输入。

  • 现在将检查用户输入的密码组合。

  • 密码被分类为强、中等和弱。

  • 如果所有条件都为真,则它将是一个强密码。

  • 否则,为中等或弱。

示例 3

#include <bits/stdc++.h>
using namespace std;
void checkpassword(string& password) {
   int n = password.length();
   bool hasLower = false, hasUpper = false, hasDigit = false;
   for (int i = 0; i < n; i++) {
      if (islower(password[i]))
         hasLower = true;
      if (isupper(password[i]))
         hasUpper = true;
      if (isdigit(password[i]))
          hasDigit = true;
   }
   cout << "Strength of password you have entered as per the input :-";
   if ( hasUpper && hasDigit && hasLower && (n >= 6))
      cout << "Strong" << endl;
   else if ((hasLower || hasUpper) && hasDigit && (n >=6))
      cout << "Moderate" << endl;
   else
      cout << "Weak" << endl;
}
int main() {
   cout << "Welcome To The Password Tester! Let's Check Your Password. " << endl;
   cout << "Let's consider the average length of an ideal strong password should be more than 6 character " << endl;
   cout << "Please enter your desired password with :- " << endl;
   cout << " * at least one upper case letter and lower case letter " << endl;
   cout << " * and also need to have at least one digit " << endl; string password;
   cout <<"Enter your monermoto password"<<endl;
   getline(cin,password);
   checkpassword(password);
   return 0;
}

输出

Welcome To The Password Tester! Let's Check Your Password. 
Let's consider the average length of an ideal strong password should be more than 6 character 
Please enter your desired password with :- 
 * at least one upper case letter and lower case letter 
 * and also need to have at least one digit 
Enter your monermoto password
Strength of password you have entered as per the input :-Weak

结论

从本文中,我们了解了如何使用 C++ 创建密码建议程序环境,然后如何在该特定平台上使用一些标签(强、中等、弱)来评估密码质量。

更新于: 2023 年 4 月 5 日

636 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.