Skip to content

Instantly share code, notes, and snippets.

@anistark
Created January 11, 2017 09:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anistark/5b4d39b8b0c8be5a9fb91f2292c63c27 to your computer and use it in GitHub Desktop.
Save anistark/5b4d39b8b0c8be5a9fb91f2292c63c27 to your computer and use it in GitHub Desktop.
Password Check
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