Я получаю сообщение об ошибке при расшифровке и зашифрованную строку:Получение Ошибка при расшифровке строки
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;
}
}
Ошибка, кажется, что вы, хотя это была служба написания кода –
Какая ошибка? Как вы шифровали строку? Как вы пытаетесь расшифровать строку? Серьезно - нам нужна дополнительная информация! –
@AlfieGoodacre Психическое программирование на этом !! –