Soy nuevo en el cifrado. Necesito implementar un algoritmo de encriptación asimétrico, que creo que usa una clave privada/pública. Empecé a usar una muestra de RSACryptoServiceProvider. estaba bien con pequeños datos para encriptar. ¡Pero cuando lo uso en datos relativamente grandes "2 líneas", obtengo la excepción CryptographicException "Bad Length"!cómo usar RSA para cifrar archivos (datos enormes) en C#
//Create a new instance of RSACryptoServiceProvider.
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
//Import the RSA Key information. This only needs
//toinclude the public key information.
//RSA.ImportParameters(RSAKeyInfo);
byte[] keyValue = Convert.FromBase64String(publicKey);
RSA.ImportCspBlob(keyValue);
//Encrypt the passed byte array and specify OAEP padding.
//OAEP padding is only available on Microsoft Windows XP or
//later.
encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
Entonces me encontré con algunas muestras de cifrado de datos de gran tamaño (o archivos) mediante el uso de CryptoStream, y sólo utilizan algoritmos simétricos como DES o 3DES, que tienen la CreateEncryptor función para devolver ICryptoTransform como una de las entradas al constructor de CryptoStream !!!
CryptoStream cStream = new CryptoStream(fStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
¿Cuál es la forma de encriptar archivos utilizando RSA?
Los algoritmos privados/públicos no son adecuados para encriptar datos grandes. En la práctica, se usan para intercambiar una clave secreta privada entre las dos partes que se utilizará para encriptar/descifrar simétricamente los datos de gran tamaño. –