A while ago, I made a Java program to store all of my passwords. It uses an modified SHA-256 hash to check whether a given username/password combo was correct for the master password, then used that same password as the key to decrypt a set of passwords. The assumption is that hashes are non-invertible, so you can’t determine the password from the hash (unless you spent centuries checking every possible password). I included the hash check so that you couldn’t add passwords to the user document unless you already knew the password (otherwise, an incorrect password would read and add garbage).
The Encryption method is a modified AES-128.
Here is the program.