Зачем нужен 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д