Home > Backend Development > C++ > body text

Strong Password Adviser

PHPz
Release: 2023-09-01 16:53:19
forward
1274 people have browsed it

Strong Password Adviser

Every May 7th, organizations around the world remind users of the importance of strong passwords. According to tech giant Google;

  • 24% of their end users use the word "password" or "Qwerty" as their account password.

  • Although, only 34% of users change their account passwords frequently.

In today's technologically advanced world, every login attempt is a potential cybercriminal attack. But many people today still use weak passwords on their professional and personal accounts.

Here we will discuss and check whether the password created is very weak, weak, medium, strong or very strong. To do this, we will check the criteria for creating passwords according to the requirements of the algorithm. In today's article, we will learn how to create a strong password suggester using C code.

How to Create a Strong Password - Algorithm

This is a general algorithm for strong passwords. It helps developers develop password suggestion systems in a C environment and find specific criteria for passwords.

  • Step 1 − Start

  • Step 2 - The ideal password should be at least eight characters in length.

  • Step 3 − Must contain at least one numeric character.

  • Step 4 - There should be at least one lowercase letter. [Example: a, b, c...., z]

  • Step 5 - There should be at least one uppercase letter. [Example: A, B, C..., Z]

  • Step 6 − It should contain at least one special character. [Example: !@#$ %^&*()- ]

  • Step 7 - End

Creating a Strong Password Adviser - Syntax

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();
}
Copy after login

In this syntax, the condition checks the minimum requirements for an ideal password. We divided each possible condition into four cases, checking whether the requirements for alphabetic, numeric and special symbol characters are met, and whether the minimum requirements are met. During processing, if there are any other characters left, they will be ignored.

Method - Create a Strong Password Adviser

  • Method 1 - Create a strong password advisory environment

  • Method 2 - Check if the password is strong, weak or medium

  • Method 3 - Check whether the password meets the conditions

Create a strong password advisory environment

In this C build code, the system will check the strength of the input data (password). It will scan the input to find all the mentioned criteria for the ideal password. If all conditions match, then it is an ideal password. Otherwise, any characters are missing from the input and it will return some randomly generated password.

The Chinese translation of

Example 1

is:

Example 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;
}
Copy after login

Output

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
Copy after login

Check whether the password strength is strong, weak or medium

Build code based on the above algorithm and C; encode string to check input strength. The entire method returns "Strong" as output when all conditions are met. If only the first three steps are met and the password is at least eight characters long, it will return "Medium".

The Chinese translation of

Example 2

is:

Example 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;
}
Copy after login

Output

Strength of password:-Strong
Copy after login

Check your password against conditions

In this code, we will perform a verification operation on a specific password. The following are the specific steps -

  • Accept user input.

  • The password combination entered by the user will now be checked.

  • Passwords are divided into three types: strong, medium and weak.

  • If all conditions are true, it will be a strong password.

  • Otherwise, medium or weak.

The Chinese translation of

Example 3

is:

Example 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;
}
Copy after login

Output

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
Copy after login

in conclusion

From this article, we learned how to create a password suggester environment using C and then how to evaluate password quality using some labels (strong, medium, weak) on that specific platform.

The above is the detailed content of Strong Password Adviser. For more information, please follow other related articles on the PHP Chinese website!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template