Недопустимая длина данных для дешифрования - C#
Формулировка задачи:
Привет! Шифрование идет как по маслу (в моём случае огромная xml - разметка), а вот при дешифровке выдает ошибку:
"Недопустимая длина данных для дешифрования". Использовал данный класс в консольном приложении при шифровании и дешифровке маленького текста по типу "hello world" - все работало.
static class Encryption { static string key = "ABCDEFGH"; static string IV = "ABCDEFGH"; static FileStream stream; static DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider(); static CryptoStream crStream; static byte[] data; static public void Crypt(string filePath, string text) { stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); cryptic.Key = ASCIIEncoding.ASCII.GetBytes(key); cryptic.IV = ASCIIEncoding.ASCII.GetBytes(IV); crStream = new CryptoStream(stream, cryptic.CreateEncryptor(), CryptoStreamMode.Write); data = ASCIIEncoding.ASCII.GetBytes(text); crStream.Write(data, 0, data.Length); crStream.Close(); stream.Close(); } static public string Decrypt(string filePath) { stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); cryptic.Key = ASCIIEncoding.ASCII.GetBytes(key); cryptic.IV = ASCIIEncoding.ASCII.GetBytes(IV); crStream = new CryptoStream(stream, cryptic.CreateDecryptor(), CryptoStreamMode.Read); StreamReader reader = new StreamReader(crStream); string data = reader.ReadToEnd(); reader.Close(); stream.Close(); return data; } }
Решение задачи: «Недопустимая длина данных для дешифрования»
textual
Листинг программы
static class Encryption { static readonly byte[] key, IV; static Encryption() { key = Encoding.ASCII.GetBytes("ABCDEFGH"); IV = Encoding.ASCII.GetBytes("ABCDEFGH"); } static public void Crypt(string filePath, string text) { using (var cryptic = new DESCryptoServiceProvider()) using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { cryptic.Key = key; cryptic.IV = IV; using (var crStream = new CryptoStream(stream, cryptic.CreateEncryptor(), CryptoStreamMode.Write)) using (var writer = new StreamWriter(crStream)) { writer.Write(text); } } } static public string Decrypt(string filePath) { using (var cryptic = new DESCryptoServiceProvider()) using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { cryptic.Key = key; cryptic.IV = IV; using (var crStream = new CryptoStream(stream, cryptic.CreateDecryptor(), CryptoStreamMode.Read)) using (StreamReader reader = new StreamReader(crStream)) { return reader.ReadToEnd(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д