Skip to content
Related Articles

Related Articles

Program to check Strength of Password

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 21 Jul, 2022
Improve Article
Save Article

A password is said to be strong if it satisfies the following criteria: 

  1. It contains at least one lowercase English character.
  2. It contains at least one uppercase English character.
  3. It contains at least one special character. The special characters are: !@#$%^&*()-+
  4. Its length is at least 8.
  5. It contains at least one digit.

Given a string, find its strength. Let a strong password is one that satisfies all above conditions. A moderate password is one that satisfies first three conditions and has length at least 6. Otherwise password is week.

Examples : 

Input : “GeeksforGeeks!@12”
Output : Strong

Input : “gfg!@12”
Output : Moderate

Implementation:

C++




// C++ program to check if a given password is
// strong or not.
#include <bits/stdc++.h>
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;
}
 
// Driver code
int main()
{
    string input = "GeeksforGeeks!@12";
    printStrongNess(input);
    return 0;
}

Java




// Java implementation for the above approach
import java.io.*;
import java.util.*;
 
class GFG {
   
   
    public static void printStrongNess(String input)
    {
        // Checking lower alphabet in string
        int n = input.length();
        boolean hasLower = false, hasUpper = false,
                hasDigit = false, specialChar = false;
        Set<Character> set = new HashSet<Character>(
            Arrays.asList('!', '@', '#', '$', '%', '^', '&',
                          '*', '(', ')', '-', '+'));
        for (char i : input.toCharArray())
        {
            if (Character.isLowerCase(i))
                hasLower = true;
            if (Character.isUpperCase(i))
                hasUpper = true;
            if (Character.isDigit(i))
                hasDigit = true;
            if (set.contains(i))
                specialChar = true;
        }
       
        // Strength of password
        System.out.print("Strength of password:- ");
        if (hasDigit && hasLower && hasUpper && specialChar
            && (n >= 8))
            System.out.print(" Strong");
        else if ((hasLower || hasUpper || specialChar)
                 && (n >= 6))
            System.out.print(" Moderate");
        else
            System.out.print(" Weak");
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        String input = "GeeksforGeeks!@12";
        printStrongNess(input);
    }
 
     
}
// contributed by Ashish Chhabra

Python3




# Python3 program to check if a given
# password is strong or not.
def printStrongNess(input_string):
     
    n = len(input_string)
 
    # Checking lower alphabet in string
    hasLower = False
    hasUpper = False
    hasDigit = False
    specialChar = False
    normalChars = "abcdefghijklmnopqrstu"
    "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "
     
    for i in range(n):
        if input_string[i].islower():
            hasLower = True
        if input_string[i].isupper():
            hasUpper = True
        if input_string[i].isdigit():
            hasDigit = True
        if input_string[i] not in normalChars:
            specialChar = True
 
    # Strength of password
    print("Strength of password:-", end = "")
    if (hasLower and hasUpper and
        hasDigit and specialChar and n >= 8):
        print("Strong")
         
    elif ((hasLower or hasUpper) and
          specialChar and n >= 6):
        print("Moderate")
    else:
        print("Weak")
 
# Driver code
if __name__=="__main__":
     
    input_string = "GeeksforGeeks!@12"
     
    printStrongNess(input_string)
 
# This code is contributed by Yash_R

Output

Strength of password:-Strong

Time complexity: O(n)
Auxiliary Space: O(1)

This article is contributed by Apurva Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.  


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!