Как проверить правильность ключа при расшифровке (алгоритм AES)? - C#

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

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

Hi! Есть реализация шифровки и расшифровки файлов. Когда значение ключа при расшифровки файла не совпадает с ключом которым он был зашифрован, то выдается исключение "Заполнение неверно и не может быть удалено" Как грамотно можно проверить правильность ключа? По гуглу нашел совет использовать HMAC, но так и не понял зачем он и как с помощью него можно это реализовать. Буду признателен за помощь.

Решение задачи: «Как проверить правильность ключа при расшифровке (алгоритм AES)?»

textual
Листинг программы
 public string Decrypt(byte[] encryptedText, byte[] key, byte[] iv)
        {
            if (encryptedText == null || encryptedText.Length <= 0)
                throw new ArgumentNullException("encryptedText");
            if (key == null || key.Length <= 0)
                throw new ArgumentNullException("key");
            if (iv == null || iv.Length <= 0)
                throw new ArgumentNullException("iv");
 
            using (var aesAlg = new AesCryptoServiceProvider())
            {
                aesAlg.Key = key;
                aesAlg.IV = iv;
 
                ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
                MemoryStream msDecrypt = null;
                try
                {
                    msDecrypt = new MemoryStream(encryptedText);
                    using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    using (var srDecrypt = new StreamReader(csDecrypt))
                    {
                        return srDecrypt.ReadToEnd();
                    }
                }
                catch (Exception ex)
                {
                    throw new CryptographicException(string.Format("Неверный пароль при расшифровке {0}", "filename"), ex);
                }
                finally
                {
                    if (msDecrypt != null)
                        msDecrypt.Dispose();
                }
            }

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


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

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

7   голосов , оценка 3.571 из 5
Похожие ответы