Зачем нужен IV в AES(System.Security.Cryptography) - C#
Формулировка задачи:
Суть такова:
мне нужно написать методы Encode/Decode для своего класса, которые будут принимать на вход массив, криптовать с помощью AES. Для AES я подготовил красивый 128-ми битный ключ шифрования. И тут, внезапно, узнал, что от меня еще хотят какой-то IV. Возможно, мне надо немного поспать, т к сейчас 12:12 ночи(sic!), но годного описания IV(вектор инициализации) я не нашел. Да и на вике нет информации по вектору инициализации, что заставляет меня грустить.
Пожалуйста, помогите кто чем может понять/написать метод шифрования. Вот то, что есть сейчас(просто стянул со stackoverflow, там на него ругаются)
Немного об алгоритме:
есть байт массив. я беру от него md5 и дописываю в конец. Это соль. Потом шифрую с помощью AES ключом, который уже получен сложным способом и отсылаю другому человеку.
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; }
Решение задачи: «Зачем нужен IV в AES(System.Security.Cryptography)»
textual
Листинг программы
Aes aes = Aes.Create(); aes.GenerateIV();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д