I loathe passwords with completely random letters and digits. It's so much nicer to have a password made up of proper words. Even if the total length is much longer, it's easier to memorize, transcribe, etc.
So I thought of this password generation scheme:
result = ""
while (result.length < 12)
result += randomWord()
if (result.length < 16)
result += shortRandomWord()
result += randomInteger(1000, 9999)
In this example, assume that randomWord()
returns an English dictionary word of length 4 to 10, and shortRandomWord()
returns one of length 4 to 5. This is sure to give you a password of length 16 to 21, made up of 2 to 5 words, plus the 4 random integers.
Is this a good password generator? How does its entropy compare to a function that generates a password of length 8 with random letters and digits?