dpg icon indicating copy to clipboard operation
dpg copied to clipboard

The Deterministic Password Generator

DPG - Deterministic Password Generator

DPG is a deterministic password generator that does not store data or keep state. Its output is based purely on user input.

To Build C++ executable

$ cd c++ && make

To Build Go cli executable

$ cd go/cli && make

To Build Java jar

$ cd java && ./build.sh

To Run Go, Python, Java or C++ version

$ dpg -s "The sentence" -w word
$ python3 dpg.py
$ java -jar dpg.jar
$ dpg "The sentence" word

Usage Recommendations

  • Use the same sentence everywhere. Commit it to memory.
    • Or, use several sentences. One for work passwords, another for personal ones, etc.
  • Use a different word for different sites. Be consistent with case (e.g. google, facebook, twitter, etc.)
  • If you need to change all of your passwords, change the sentence.
  • If you need to change one site password, change the word.

Screenshot of Java GUI implementation

Screenshot

Why traditional password managers are flawed

Moved to blog.

Notes

  • DPG is based on my earlier SHA1_Pass software in 2009.
  • The C++ and Go implementations are intended for testing and validation only.