Message length limited when using RSA public-key cryptography.
Attempting to encrypt a message that is larger than the modulus will result in the error:
System error: Message too long. (700)
If you need to use RSA on a larger message, the normal method is to use a hybrid scheme, similar to the following:
- Generate a key from a password.
- Use the key with a symmetric encryption algorithm (such as AES) to encrypt the large message.
- Encrypt the key using RSA.
You could do so using code similar to the following:
//generate a key and use the key to encrypt the large message
//Note: our components will generate the Key and IV from a given password
aes1.KeyPassword = "mypassword";
aes1.InputMessage = someLargeMessage;
aes1.Encrypt();
//save the key
string myKey = aes1.Key;
//now encrypt the key
rsa1.RecipientCert = new Certificate(cstPEMKeyFile, "C:\\PATH\\TO\\certFile.pem", "certPassword", "*");
rsa1.InputMessage = myKey;
rsa1.Encrypt();
//store the encrypted key
string encryptedKey = rsa1.OutputMessage;
We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at kb@nsoftware.com.