2016-12-21 4 views
1

Я получаю сообщение об ошибке при расшифровке и зашифрованную строку:Получение Ошибка при расшифровке строки

5duOH + Tlg5deIrWZiHoNaQ == wVxXSl9pFu6A8h14/nLdyBkDzO4xmec7PQ0cB7MHjCDqhSRum3C7I1OfqL1rEWbNonU/ayCaJS18zV7ivQQU7A == MBJzKMrrrbmc2/vBZSPDkQ == I09Kj25UO + LcmRzgoqTT2g == + Fkm9VCGplEK6eEyHyEtuEodKSbckC07M2FShu2ukCg =

Ошибка заключается в следующем:

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

Мой код шифрования: публичная строка EncryptQueryString (строка inputText, строка ключ, строка соль) { байт [] PLAINTEXT = Encoding.UTF8.GetBytes (inputText);

using (RijndaelManaged rijndaelCipher = new RijndaelManaged()) 
    { 
     PasswordDeriveBytes secretKey = new PasswordDeriveBytes(Encoding.ASCII.GetBytes(key), Encoding.ASCII.GetBytes(salt)); 
     using (ICryptoTransform encryptor = rijndaelCipher.CreateEncryptor(secretKey.GetBytes(32), secretKey.GetBytes(16))) 
     using (MemoryStream memoryStream = new MemoryStream()) 
     using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) 
     { 
      cryptoStream.Write(plainText, 0, plainText.Length); 
      cryptoStream.FlushFinalBlock(); 
      string base64 = Convert.ToBase64String(memoryStream.ToArray()); 

      // Generate a string that won't get screwed up when passed as a query string. 
      string urlEncoded = HttpUtility.UrlEncode(base64); 
      return urlEncoded; 
     } 
    } 
} 

дешифрование:

public string DecryptQueryString(string inputText, string key, string salt) 
{ 
    byte[] encryptedData = Convert.FromBase64String(inputText); 
    PasswordDeriveBytes secretKey = new PasswordDeriveBytes(Encoding.ASCII.GetBytes(key), Encoding.ASCII.GetBytes(salt)); 

    using (RijndaelManaged rijndaelCipher = new RijndaelManaged()) 
    using (ICryptoTransform decryptor = rijndaelCipher.CreateDecryptor(secretKey.GetBytes(32), secretKey.GetBytes(16))) 
    using (MemoryStream memoryStream = new MemoryStream(encryptedData)) 
    using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read)) 
    { 
     byte[] plainText = new byte[encryptedData.Length]; 
     cryptoStream.Read(plainText, 0, plainText.Length); 
     string utf8 = Encoding.UTF8.GetString(plainText); 
     return utf8; 
    } 
} 
+0

Ошибка, кажется, что вы, хотя это была служба написания кода –

+0

Какая ошибка? Как вы шифровали строку? Как вы пытаетесь расшифровать строку? Серьезно - нам нужна дополнительная информация! –

+0

@AlfieGoodacre Психическое программирование на этом !! –

ответ

2

Base64 обивка состоит из = или ==, и поэтому он выглядит несколько строк Base64 где прилагаемыми вместе каким-то образом. Вам нужно будет найти, где они все закончились, разбить их и попробовать еще раз.

Отметьте, что строки Base64 не всегда имеют прописку, только когда это необходимо, поэтому могут быть даже перерывы в местах, которые вы не видите здесь.

Смежные вопросы