I'm searching for a ZKP package that supports asymmetric encryption so I can implement the following scenario:
Carol encrypts message $m$ with Alice's public key and sends the ciphertext to Alice. Bob and Alice both know $\operatorname{hash}(m)$, but because $m$ is encrypted by Alice's public key Bob doesn't know $m$--only Alice knows $m$.
Here is the part that needs ZKP: Alice wants to prove to Bob that this ciphertext is actually the encryption of a message whose hash is $\operatorname{hash}(m)$.
In other words, I want to be able to prove that I have a value whose hash is equal to y = hash(a), and whose encrypted form is z = enc(a), but I don't want to reveal a.
I searched in ZKP packages thoroughly, but none of them can implement encryption, so I take it that ZKP isn't the solution.
Do any of the available packages support what I am trying to do?