Procura no utilizar el término cifrar junto a la clave privada, ya que el término real es firmar.
Para firmar primero calculas el digest o hash de un mensaje o de un bloque de de datos. Después firmas dicho digest (m^d (mod N)) y se lo entregas al destinatario junto al mensaje cifrado por AES o en plano. Entonces el destinatario descifra el hash cifrado con tu pública y calcula el hash para el mensaje que le has entregado. Si ambos hashes coinciden el mensaje no ha sido modificado y ha sido enviado por quien dice ser.
Es decir, se respetan los 3 principios clave de la criptografía de clave pública: Integridad (mensaje no modificado), Confidencialidad (aunque capturen el mensaje no podrán hacer nada) y No repudio (sabemos que proviene del emisor y no de otra persona que lo suplante).
Sobre la longitud del mensaje a cifrar, bueno te lo aclaro:
El esquema de cifrado/descifrado en RSA se basa en los grupos multiplicativos de enteros módulo N. La clave pública es un semiprimo llamado N compuesto por dos primos 'p' y 'q'. Al cifrar o descifrar tu utilizas una base 'm' elevada a la 'e' o 'd' como ya dije antes ('e' y 'd' satisfacen la multiplicativa inversa mod phi(N)).
En este caso la base 'm' es una clase de congruencia, es decir, es un número coprimo con N menor que N que genera un conjunto de congruencias coprimas con N.
Básicamente el mensaje tiene que tener longitud N - 1. Te dejo la referencia oficial, está en Inglés, pero su lectura es obligatoria para saber como se implementa RSA en la práctica. La teoría sobre RSA se aprende bien en .pdfs varios, o mismamente KhanAcademy o YouTube. Aunque realmente es aprender sobre teoría de números (number theory).
https://tools.ietf.org/html/rfc3447Te dejo una pequeña reflexión sobre el cifrado/firma en RSA:
Imagina dos archivos diferentes entre sí pero con hashes casi idénticos. Imagina también que a la hora de firmar firmasemos el hash como tu dices, byte a byte en vez de lo máximo posible.
Si el Hash de ambos dos es de 160bit y son idénticos en los primeros 128bit (16bytes), la firma del mensaje será idéntica en los primeros 16bytes y el problema se reduce a una fuerza bruta de 32bit (4byte), de esta forma consegurías falsificar la firma. Por eso para firmar se firma el hash entero de 160bit o lo que pese ya que N en bits es igual o superior a 1024bits por ende el módulo es superior en tamaño al mensaje.
Saludos.