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

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

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

Суть такова: мне нужно написать методы Encode/Decode для своего класса, которые будут принимать на вход массив, криптовать с помощью AES. Для AES я подготовил красивый 128-ми битный ключ шифрования. И тут, внезапно, узнал, что от меня еще хотят какой-то IV. Возможно, мне надо немного поспать, т к сейчас 12:12 ночи(sic!), но годного описания IV(вектор инициализации) я не нашел. Да и на вике нет информации по вектору инициализации, что заставляет меня грустить. Пожалуйста, помогите кто чем может понять/написать метод шифрования. Вот то, что есть сейчас(просто стянул со stackoverflow, там на него ругаются)
Листинг программы
  1. static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
  2. {
  3. byte[] encrypted;
  4. // Create an RijndaelManaged object
  5. // with the specified key and IV.
  6. using (RijndaelManaged rijAlg = new RijndaelManaged())
  7. {
  8. rijAlg.Key = Key;
  9. rijAlg.IV = IV;
  10. // Create a decrytor to perform the stream transform.
  11. ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
  12. // Create the streams used for encryption.
  13. using (MemoryStream msEncrypt = new MemoryStream())
  14. {
  15. using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
  16. {
  17. using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
  18. {
  19. //Write all data to the stream.
  20. swEncrypt.Write(plainText);
  21. }
  22. encrypted = msEncrypt.ToArray();
  23. }
  24. }
  25. }
  26.  
  27. // Return the encrypted bytes from the memory stream.
  28. return encrypted;
  29. }
Немного об алгоритме: есть байт массив. я беру от него md5 и дописываю в конец. Это соль. Потом шифрую с помощью AES ключом, который уже получен сложным способом и отсылаю другому человеку.

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут