C# Ошибка в decrypt

191
03 мая 2018, 06:36

Как справиться с ошибкой

byte[] cipherBytes = Convert.FromBase64String(cipherText);

При декрипте выдает

Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или недопустимый символ среди символов заполнения.

Полный код

public  string Encrypt(string clearText)
    {
        byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(clearBytes, 0, clearBytes.Length);
                    cs.Close();
                }
                clearText = Convert.ToBase64String(ms.ToArray());
            }
        }
        return clearText;
    } 
    public  string Decrypt(string cipherText)
    {
        cipherText = cipherText.Replace(" ", "+");
        byte[] cipherBytes = Convert.FromBase64String(cipherText);//ВОТ ТУТ ОШИБКА
        string KeyBuf = EncryptionKey;
        Clipboard.SetText(KeyBuf);
        using (Aes encryptor = Aes.Create())
        {
            Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
            encryptor.Key = pdb.GetBytes(32);
            encryptor.IV = pdb.GetBytes(16);
            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(cipherBytes, 0, cipherBytes.Length);
                    cs.Close();
                }
                cipherText = Encoding.Unicode.GetString(ms.ToArray());
            }
        }
        return cipherText;
    }
Answer 1

В base64 нет символа "+" : cipherText = cipherText.Replace(" ", "+");

READ ALSO
Wordpress не удается подключить стили

Wordpress не удается подключить стили

Все перепроверил несколько разНе знаю где ошибка

197
Как сделать равноудаленные inline блоки?

Как сделать равноудаленные inline блоки?

БЕЗ ФЛЕКСБОКСА И ГРИДОВ, нужна бОльшая поддержка браузеров

236
Как я могу сделать div с irregular shapes с помощью css3 и html5?

Как я могу сделать div с irregular shapes с помощью css3 и html5?

Мне интересно, есть ли возможность построить div с нерегулярными фигурами, что-то,аналогичные картам (например, Гренландия, Европа, Африка)

197
Создание вращающегося 3d-блока с помощью CSS transitions и Javascript

Создание вращающегося 3d-блока с помощью CSS transitions и Javascript

Я экспериментировал с CSS, пытаясь создать 3d box, в котором можно выбрать передний план фигуры с помощью javascriptОн просто меняет имя класса box divs и использует...

195