The only way to do it AFAIK is to encrypt it with the pubkey of the receiver, store the encrypted message on-chain.
As one commenter already pointed out, signing is not the same as encrypting, and the technique you're referring to here simply does not work with ed25519 (Solana's chosen signing algorithm).
Phantom won't be able to help you here. You'll need to bolt on your service's encryption yourself.
If your data is not public (encrypted), a blockchain is not a great place for it.
If you want the Web3 integration, your problem is probably better solved using Web3 storage tools like shadow.storage. Consider how you can do content-based addressing and URLs stored on chain pointing to off-chain storage of encrypted content.