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