I would like to prompt users for a single passphrase to establish trust with separate normally but not always complimentary systems from one password input. I'm essentially looking for a box where one password enters and two leaves where maximum of entropy is maintained and the chance of using either output password to derive the other is minimized. There are some constraints: The algorithm must be public knowledge. No other secret keys can be involved. Output passwords must be deterministic for any given input password. A simple answer seems to be: pass1 = HMAC(password,"Magic One") pass2 = HMAC(password,"Magic Two") With this the difficulty of that which knows 'pass1' to derive 'pass2' should be the same as difficulty required to guess 'password'. Are there better existing algorithms? The only reference I have been able to find is Steve Bellovin's draft-bellovin-hpw-01 using same basic method. Specifically is it practically possible to increase the difficulty of someone with knowledge of 'pass1' to derive 'pass2' to more than the difficulty of guessing 'password' itself even if it requires spending portions of available 'password' entropy? For example 'pass2' is exposed in an environment where it is being attacked "offline" while 'pass1' is less vulnerable. In this case 'pass1' is effectively also exposed to the "offline" risk as much as 'pass2'.