Even if both the key and the encrypted data would be intercepted, it would be undecryptable since only the server knows the decryption key.
This is exactly how asymmetric cryptographic systems work normally. In an asymmetric public-key encryption system, an entity holds two keys in a "keypair": a public key
P and a private key
R. The system defines two operations,
Enc(message, P) (encryption with the public key) and
Dec(ciphertext, R) (decryption with the private key) such that
Dec(Enc(msg, P), R) == msg. The public key is available to all, in order to encrypt messages, but only the entity that owns the keypair knows the private key, so it is the only one who can decrypt messages.
Your requirements have defined a hypothetical public-key crypto system in which the public key is generated by the hash of the private key. Just use an established public-key system; that will satisfy the general requirements described in your last sentence.