Никак не могу сообразить как мне правильно сделать реализацию чтобы впихнуть ключ RSA 2048 в шифрование AES.
У меня есть этот метод AES шифрования:
public static void AES_Encrypt(string inputFile, string password)
{
try
{
byte[] passBytes = Encoding.UTF8.GetBytes(password);
byte[] saltBytes = new byte[12];
using (MemoryStream tempStream = new MemoryStream())
{
using (var inputFileStream = new FileStream(inputFile, FileMode.Open))
inputFileStream.CopyTo(tempStream);
tempStream.Position = 0;
using (var outFileStream = new FileStream(inputFile, FileMode.Create))
using (var rijndaelManaged = new RijndaelManaged())
{
rijndaelManaged.KeySize = 256;
rijndaelManaged.BlockSize = 128;
using (var rfc2898DeriveBytes = new Rfc2898DeriveBytes(passBytes, saltBytes, 1000))
{
rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8);
rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8);
}
rijndaelManaged.Mode = CipherMode.CBC;
using (var cryptoStream = new CryptoStream(outFileStream, rijndaelManaged.CreateEncryptor(), CryptoStreamMode.Write))
{
tempStream.CopyTo(cryptoStream);
}
}
}
}
catch (CryptographicException ex) { File.AppendAllText("AES_Enc.txt", ex.Message + "\r\n" + ex.ToString()); }
catch (IOException ex) { File.AppendAllText("AES_Enc_IO.txt", ex.Message + "\r\n" + ex.ToString()); }
catch (UnauthorizedAccessException) { }
}
public static void AES_Decrypt(string inputFile, string password)
{
try
{
byte[] passBytes = Encoding.UTF8.GetBytes(password);
byte[] saltBytes = new byte[12];
using (MemoryStream tempStream = new MemoryStream())
{
using (var inputFileStream = new FileStream(inputFile, FileMode.Open))
inputFileStream.CopyTo(tempStream);
tempStream.Position = 0;
using (var outFileStream = new FileStream(inputFile, FileMode.Create))
using (var rijndaelManaged = new RijndaelManaged())
{
rijndaelManaged.KeySize = 256;
rijndaelManaged.BlockSize = 128;
using (var rfc2898DeriveBytes = new Rfc2898DeriveBytes(passBytes, saltBytes, 1000))
{
rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8);
rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8);
}
rijndaelManaged.Mode = CipherMode.CBC;
using (var cryptoStream = new CryptoStream(tempStream, rijndaelManaged.CreateDecryptor(), CryptoStreamMode.Read))
{
cryptoStream.CopyTo(outFileStream);
}
}
}
}
catch (CryptographicException ex) { File.AppendAllText("AES_Enc.txt", ex.Message + "\r\n" + ex.ToString()); }
catch (IOException ex) { File.AppendAllText("AES_Enc_IO.txt", ex.Message + "\r\n" + ex.ToString()); }
catch (UnauthorizedAccessException) { }
}
У меня так же имеется публичный и приватный ключ который я получаю :
public string GetKey(bool choice)
{
string key = null;
try
{
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048))
{
if (choice)
{
key = rsa.ToXmlString(false);
}
else
{
key = rsa.ToXmlString(true);
}
}
}
catch (CryptographicException) { }
return key;
}
Как мне применить полученный ключ RSA-2048 к AES ( для шифрования aes ключа ) ?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я пытаюсь сделать SELECT * FROM member WHERE id = 627528083 запрос к базе данных, но мне выдаёт ошибку синтаксиса в строке 41, почему?
Прошу внести ясностьЯ начал изучение с# с консоли что не удивительно
Доброго времени суток участники форумаСтолкнулся с проблемой при изучении языка C#