I’ve recently uploaded a tool to check password strength in Python. Prior, it seems like the only options that existed were to call cracklib via ctypes or using django-passwords, which, obviously, only works in the context of Django.
I took django-passwords and modified it to work as a library. It works as four separate validation classes:
- LengthValidator: Check if between minimum and maximum lengths.
- ComplexityValidator: Check for a minimum of certain character classes.
- DictionaryValidator: Check if a password exists within a predefined list.
- CommonSequenceValidator: Check is a password is a alphabetic, numeric, etc.. sequence.
Example of usage:
# See example for more information.
from password_check import ComplexityValidator, ValidationError
complexity = { # A minimum of N upper-case letters.
"UPPER": 2,
# A minimum of N lower-case letters.
"LOWER": 2,
# A minimum of N digits.
"DIGITS": 2,
# A minimum of N punctuation characters.
"PUNCTUATION": 2,
# A minimum of N non-ASCII characters ("\xx")
"NON ASCII": 0,
# A minimum of N space-separated, unique words.
"WORDS": 0 }
complexity_validator = ComplexityValidator(complexity)
# Throws ValidationError due to several violations.
complexity_validator('simplepassword')
For more examples, go to the link, above, and look at the example script.