Зачем нужен IV в AES(System.Security.Cryptography) - C#

Узнай цену своей работы

Формулировка задачи:

Суть такова: мне нужно написать методы Encode/Decode для своего класса, которые будут принимать на вход массив, криптовать с помощью AES. Для AES я подготовил красивый 128-ми битный ключ шифрования. И тут, внезапно, узнал, что от меня еще хотят какой-то IV. Возможно, мне надо немного поспать, т к сейчас 12:12 ночи(sic!), но годного описания IV(вектор инициализации) я не нашел. Да и на вике нет информации по вектору инициализации, что заставляет меня грустить. Пожалуйста, помогите кто чем может понять/написать метод шифрования. Вот то, что есть сейчас(просто стянул со stackoverflow, там на него ругаются)
static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
        {
            byte[] encrypted;
            // Create an RijndaelManaged object 
            // with the specified key and IV. 
            using (RijndaelManaged rijAlg = new RijndaelManaged())
            {
                rijAlg.Key = Key;
                rijAlg.IV = IV;
 
                // Create a decrytor to perform the stream transform.
                ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
 
                // Create the streams used for encryption. 
                using (MemoryStream msEncrypt = new MemoryStream())
                {
                    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                    {
                        using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                        {
 
                            //Write all data to the stream.
                            swEncrypt.Write(plainText);
                        }
                        encrypted = msEncrypt.ToArray();
                    }
                }
            }

            // Return the encrypted bytes from the memory stream. 
            return encrypted;
 
        }
Немного об алгоритме: есть байт массив. я беру от него md5 и дописываю в конец. Это соль. Потом шифрую с помощью AES ключом, который уже получен сложным способом и отсылаю другому человеку.

Решение задачи: «Зачем нужен IV в AES(System.Security.Cryptography)»

textual
Листинг программы
Aes aes = Aes.Create();
aes.GenerateIV();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5