Чтобы решить проблемы, вам нужно сначала выполнить Encode, а затем декодировать полностью готовую строку encode-base64, в зависимости от того, где вы ее используете.
Если, например, вы используете его в URL (или запросе), где, вероятно, это место, которое вы собираетесь использовать, то вам нужно кодировать URL-адрес перед его использованием, декодировать URL-адрес, прежде чем вы получите его обратно. Причина в том, что вам нужно избегать смешивания тех же символов, которые URL использует в качестве символов кода, с зашифрованными символами.
В любом случае вот код, который решает вашу проблему (и я использую по той же причине):
public static string encodeSTROnUrl(string thisEncode)
{
if (null == thisEncode)
return string.Empty;
return HttpUtility.UrlEncode(Encrypt(thisEncode));
}
public static string decodeSTROnUrl(string thisDecode)
{
return Decrypt(HttpUtility.UrlDecode(thisDecode));
}
п.с.
У меня та же проблема, и я попытался, как вы говорите, заменить «+» и другие, но в конце концов это то, что заставляет его работать.
Не забудьте удалить text = text.Replace ("", "+") и другие манипуляции с шифрованием из вашего кода, просто зашифруйте и расшифруйте.