This is an implementation of a password generation scheme I thought of which satisfies the following properties:
- The generation procedure is completely deterministic.
- Passwords on two distinct platforms are as different from each other as possible. Knowledge of one password does not compromise others.
- Passwords generated are far removed from dictionary words.
- If lost, passwords generated this way are easily re-obtainable.
- In the event that a password is compromised, it is easily replaceable without any loss in the degree of security offered by the replacement.
- Passwords of reasonable length [5, 64] are generatable. By default, passwords of length 16 are generated.
- Passwords generated are compliant to requirements for passwords on most platforms.
- at least one lowercase character
- at least one uppercase character
- at least one special character
- at least one digit
- Knowledge of the scheme of generation does not diminish the security of passwords generated.
- To generate a password for a single platform, use
python3 gp.py PLATFORM_NAME
- To generate passwords for multiple platforms, list them in a plaintext
FILE
with each platform on a new line and run
python3 gp.py --list FILE
- To create a password of a nondefault length, use the optional argument
--length LENGTH
.
You will be asked to provide your secret string in each of these cases.
Do not divulge your secret string to anyone. If you do, a person with knowledge of the scheme can recover all of your passwords. This system relies on the strength of your secret string. CHOOSE A STRONG SECRET STRING.
It is recommended that you use a password manager in addition to this scheme since the generated passwords may be difficult to remember.