It’s not easy to create passwords that are both difficult to guess and easy to remember. An XKCD comic describes an algorithm that provides both security and recall by suggesting that a password be composed of “four random common words” (https://xkcd.com/936/). For instance, the comic suggests that the password composed of the words “correct,” “horse,” “battery,” and “staple” would provide “~44 bits of entropy” which would require around 550 years for a computer to guess, given 1,000 guesses per second.
We’re going to write a program called password.py that will create passwords by randomly combining words from some input files. Many computers have a file that lists thousands of English words, each on a separate line. On most of my systems, I can find this at /usr/share/dict/words, and it contains over 235,000 words! As the file can vary by system, I’ve added a version to the repo so that we can use the same file. This file is a little large, so I’ve compressed to inputs/words.txt.zip. You should unzip it before using it:
$ unzip inputs/words.txt.zip
$ ./password.py ../inputs/words.txt --seed 14 CrotalLeavesMeeredLogy NatalBurrelTizzyOddman UnbornSignerShodDehort