Sono nuovo alla crittografia. Devo implementare un algoritmo di crittografia asimmetrica, che penso utilizzi una chiave privata/pubblica. Ho iniziato a utilizzare un campione di RSACryptoServiceProvider. era ok con piccoli dati da crittografare. Ma quando lo si utilizza su dati relativamente più grandi "2 righe", ottengo l'eccezione CryptographicException "Bad Length"!come utilizzare RSA per crittografare i file (dati enormi) in 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);
}
Poi ho trovato alcuni campioni di cifratura dei dati di grandi dimensioni (o file) utilizzando CryptoStream, e solo utilizzare algoritmi simmetrici come DES o 3DES, che hanno la funzione CreateEncryptor per restituire ICryptoTransform come uno degli ingressi al costruttore di CryptoStream !!!
CryptoStream cStream = new CryptoStream(fStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
Qual è il modo di crittografare i file utilizzando RSA?
Gli algoritmi privati / pubblici non sono adatti per crittografare i dati di grandi dimensioni. In pratica vengono utilizzati per scambiare una chiave privata segreta tra le due parti che verranno utilizzate per crittografare/decifrare simmetricamente i dati di grandi dimensioni. –