I want to sign and transmit a short message, which contains a few simple hashes. My objective is not to prevent an attacker from inserting a fake message, but to ensure that the attacker cannot define or craft the specific contents of such a fake message.
The conventional method involves creating a signature by first hashing the message to be signed, then encrypting the hash with the private key, and finally transmitting both the original message and the signature. A receiver can then verify the authenticity of the message by decrypting the hash with the public key, and comparing it to a hash computed from the received message. This process is detailed, for instance, in How does RSA signature verification work?
However, for the sake of bandwidth economy, I'm contemplating the feasibility of omitting the hashing step: could I directly sign the message with the private key and only transmit the resulting signature? The receiver (or any third party) will then be able to reconstruct the original message from the signature by decrypting it with the public key. My intuition is that a message created by an attacker will generally not decrypt or decrypt to random bytes.