Program to check Strength of Password
A password is said to be strong if it satisfies the following criteria:
- It contains at least one lowercase English character.
- It contains at least one uppercase English character.
- It contains at least one special character. The special characters are: !@#$%^&*()-+
- Its length is at least 8.
- 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 : StrongInput : “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.
Please Login to comment...