Created
January 11, 2017 09:29
-
-
Save anistark/5b4d39b8b0c8be5a9fb91f2292c63c27 to your computer and use it in GitHub Desktop.
Password Check
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def password_strength(password): | |
""" | |
Verify the strength of 'password' | |
Returns a dict indicating the wrong criteria | |
A password is considered strong if: | |
8 characters length or more | |
1 digit or more | |
1 symbol or more | |
1 uppercase letter or more | |
1 lowercase letter or more | |
""" | |
response_code, response_data, error = initalize_values() | |
# calculating the length | |
length_error = len(password) < 8 | |
# searching for digits | |
digit_error = re.search(r"\d", password) is None | |
# searching for uppercase | |
uppercase_error = re.search(r"[A-Z]", password) is None | |
# searching for lowercase | |
lowercase_error = re.search(r"[a-z]", password) is None | |
# searching for symbols | |
symbol_error = re.search(r"[ !#$%&'()*+,-./[\\\]^_`{|}~"+r'"]', password) is None | |
# overall result | |
password_ok = not ( length_error or digit_error or uppercase_error or lowercase_error or symbol_error ) | |
if password_ok: | |
response_data = 'Success' | |
response_code = 200 | |
else: | |
response_code = 400 | |
error_pre_text = 'Password must have ' | |
if length_error: | |
error = error_pre_text+'8 characters length or more' | |
elif digit_error: | |
error = error_pre_text+'1 digit or more' | |
elif uppercase_error: | |
error = error_pre_text+'1 uppercase letter or more' | |
elif lowercase_error: | |
error = error_pre_text+'1 lowercase letter or more' | |
elif symbol_error: | |
error = error_pre_text+'1 symbol or more' | |
return response_code, response_data, error |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment