passy solves the problem of managing secure, unique passwords.
passy does NOT store anything to any disk. This means if your disk crashes
you will not lose ANY of your passwords.
passy requires you to keep one, private, secret passkey. All of your unique
passwords are generated from this one passkey.
Actual passwords are generated by HMAC-SHA1. For example, to calculate your
password for a certain website, passy uses something similar to:
hmac_sha1('your secret key','slashdot.org')
passy provides four passwords for each 'site'. This way, if your password
is ever expired, as some systems stupidly do, you can rotate to the next.
The 'site' doesn't have to be an actual web site, of course, it could be
anything you want, like "bank password", "work login", etc.
NOTE: The list of Sites is currently stored directly in the script!
Ideas for Improvement
* make variant passwords use more features (mixes in case, etc.).
* use optionparser (or similar) to clean up the CLI
* add ability to ask for a specific site
* add ability to cache master key
* use termios (or similar) to clean up the tty - but retain Windows compat
* gemify it (and gemify my simple hmac separately?)
* have passy look for ~/.passysites for the list of sites
* wrap in a multi-platform GUI so idiots can use it too (wxRuby, RubyQT, FX, etc.)
* add a "change master password" mode that will prompt for two passwords, and
provide the results for both [after which the user much change their password
at every site, etc.]
* store state as to which variant is current at each site