Недопустимая длина данных для дешифрования - 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();
                }
            }
        }
    }

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


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

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

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