Just use random words. Memorable passwords don’t have to be weak. Five random common english words are already very strong. Just make sure you don’t pick the words by hand.
https://github.com/resonantcore/lib/blob/master/demo/dicewar...
Run this locally, e.g.
dw = new Diceware();
dw.load("https://raw.githubusercontent.com/resonantcore/lib/master/js/diceware/diceware.wordlist.asc", function() {
console.log("Diceware loaded!");
});
console.log(dw.getWords(8).join(' ')); shuf -n 5 /usr/share/dict/words
On Mac OS X you need coreutils for shuf, which you can get from brew (it's called gshuf once installed). shuf -n 4 /usr/share/dict/words | xargs | sed 's/ //g' echo `shuf -n 5 /usr/share/dict/words` randword()
{
if [ -z $1 ]; then
echo `shuf --random-source=/dev/urandom -n 5 /usr/share/dict/words`
else
echo `shuf --random-source=/dev/urandom -n $1 /usr/share/dict/words`
fi
}
Test output: kobra@stormforge blah $ randword 4
crackpots fragmentation maximally Bradly's
kobra@stormforge blah $ randword 6
turnover's nonproliferation's bestowal's sulkier hillbilly Narmada
kobra@stormforge blah $ randword
Marciano fibulas roadwork mobilizations organics
kobra@stormforge blah $ randword
coins bronzed housemother's forefather supposingEdit: I see that shuf permits the use of custom seeds, so you can do the following, and it will be secure:
shuf -n 5 --random-source=/dev/urandom /usr/share/dict/words python -c 'import random;w=open("/usr/share/dict/words").readlines();print " ".join([random.choice(w).strip() for _ in range(5)])'Bruce Schneier blogged about this last year: https://www.schneier.com/blog/archives/2014/03/choosing_secu...