I’ve noticed that browsers like Safari and Chrome are helpfully offering to generate secure passwords for me when I create a new login somewhere.
Sometimes this is really nice! Certainly it’s better than having to take a few minutes to compose a new password, especially since the quality of passwords I can easily generate on the spot is … shall we say of questionable quality sometimes, depending on time of day, blood sugar levels, etc.
So just for fun I decided to type out a Perl one liner to generate passwords for me in situations where I don’t necessarily have access to (or want) Safari and friends to do it for me.
I make no claims nor warranties about the “security” of the passwords generated by the following code, but I sure did enjoy writing it. Just for fun, I did paste an output string into Kaspersky’s online password strength tester, and according to the tester it’s … actually not bad? (Again: not an expert here)
Anyway, here’s the code. It loops over an alphanumeric array with some special characters thrown in, grabbing one character at random for each iteration. It also folds the case of the character if the number of the current iteration is even (assuming the character is of the sort whose case can be folded, which some aren’t).
$ perl -E '@vals = split "", "0x1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-?!@^&*()"; $_ % 2 == 0 ? print $vals[ rand($#vals) ] : print fc $vals[ rand($#vals) ] for 0 .. 24; say;'
To give you a sense of the output of this script, here’s the password I typed into the Kaspersky checker for reference: