Tôi mới sử dụng mã hóa. Tôi cần phải thực hiện thuật toán mã hóa không đối xứng, mà tôi nghĩ rằng nó sử dụng khóa riêng/công khai. Tôi bắt đầu sử dụng một mẫu RSACryptoServiceProvider. nó là ok với dữ liệu nhỏ để mã hóa. Nhưng khi sử dụng nó trên dữ liệu tương đối lớn hơn "2 dòng", tôi nhận được ngoại lệ CryptographicException "Bad Length"!cách sử dụng RSA để mã hóa các tệp (dữ liệu lớn) trong 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);
}
Sau đó, tôi tìm thấy một số mẫu mã hóa dữ liệu lớn (hoặc file) bằng cách sử dụng CryptoStream, và chỉ sử dụng các thuật toán đối xứng như DES hoặc 3DES, có chức năng CreateEncryptor trở ICryptoTransform là một trong những đầu vào cho các nhà xây dựng của CryptoStream !!!
CryptoStream cStream = new CryptoStream(fStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
Cách mã hóa tệp bằng RSA là gì?
thuật toán riêng/công cộng không phù hợp để mã hóa dữ liệu lớn. Trong thực tế, chúng được sử dụng để trao đổi khóa bí mật riêng giữa hai bên sẽ được sử dụng để mã hóa/giải mã dữ liệu lớn một cách đối xứng. –