OpenPGP
RSA peut encrypter un nombre plus petit que $n$. On pourrait décomposer un message plus gros en paquets de $T$ bits avec $2^T < n$ mais ce n'est quasi-jamais fait car le codage/décodage est algorithmiquement long.
On utilise alors une technique mixte, issue de PGP, pour cela.
Supposons qu'Alice veut envoyer un message $m$ à Bob. Il faut de :
- l'authentification : Alice chiffre le hash de $m$ avec sa clé privée
- la confidentialité :
- une clé $k$ est générée puis chiffrée avec la clé publique de Bob
- le message $m$ est compressé puis chiffré avec la clé $k$ (avec un chiffre symétrique)
 
Alice envoie à Bob :
- la signature électronique de son message (le hash de $m$ chiffré avec sa clé privée)
- la clé $k$ chiffrée avec la clé publique de Bob
- le message compressé puis chiffré avec la clé $k$
Bob peut alors :
- retrouver la clé de chiffrement $k$ en utilisant sa clé privée
- déchiffrer le message avec la clé $k$, puis le décompresser
- vérifier que le message vient bien d'Alice en comparant :
- le hash du message
- le déchiffrement de la signature avec la clé publique d'Alice.