I have considered your requirements to be these:
- it should be a function
- passphrase is so weak, that if hash of it is known (or big part of hash), then it can be brute forced.
- many passwords can be generated as output.
There exists various kinds of key derivation functions, which derive cryptographic keys from other cryptographic keys or passwords.
The solutions builds of these components. The general idea is to to apply password-based key derivation to get one key (the master key), derive keys from the master key, and represent those keys as passwords.
PASSWORD-BASED KEY DERIVATION
The password-based key derivation functions are good for deriving key from a password. These are good to deal with problem 2: i.e., they've been intended to produce (as good as possible) cryptographic key from password or passphrase.
Key-derivation function is used as follows:
$K = PBKDF(passphrase, salt, 1000000)$
In addition to passphrase, they usually need salt and iteration count. Iteration count shall be selected to as large value as possible without the operation taking too long for the user. Depending on context, the user is most likely wiling to wait 0.1 seconds, 1 seconds or maybe even 5 seconds. Some of most popular choices for password-based key derivation currently include bcrypt, scrypt and PKCS #5's PBKDF2 also known as NIST SP 800-132 Part 1.
In essence, password-based key derivation function is typically based on iterative execution of hash function or pseudo-random function, i.e. something like:
$PRF(...(PRF(PRF(salt, password)))...)$
[Substitute PRF with a function of your choice, that is works like PRF, such as HMAC-SHA256.] But to get all details implemented correctly, please, use one of above standards to implement the solution.
KEY-DERIVATION
Once you have cryptographic key, it is possible to derive other keys from this key using key derivation functions. These derived keys (assuming good key derivation function) are independent in sense that it is not possible to derive original key from these keys.
Some of good key derivation functions are found in HKDF (RFC 5869) and NIST SP 800-108: Recommendation for Key Derivation
Using Pseudorandom Functions.
In the simplest case, key derivation is something like:
$K_x = PRF(K, x)$
where x is purpose or label or index of the key, and K is the master key.
But to get all details implemented correctly, please, use one of above standards to implement the solution.
PASSWORD FROM KEY
Now you have arbitrary amount of cryptographic keys. But you wanted passwords. There are various ways to convert cryptographic key to password.
One simple approach is to use base 16 (hex), base 32 or base 64 encoding to represent the key in ASCII characters.
Alternative approach is to have a template of password and apply FPE (Format Preserving Encryption) to template with the derived key. One standard for FPE is NIST SP 800-38G.
Anyway, in essence, what you will need is a function that will represent a key as a password. Thus:
${PASS}_x = ENCODE(K_x)$
Last, but not least, I would recommend to use pre-existing password manager software rather than inventing your new solution if possible.