Request.Querystring удаляет символы из зашифрованного текста - PullRequest
4 голосов
/ 19 ноября 2009

В моем приложении я беру адрес электронной почты пользователя, шифрую его, URLEncode и передаю в QueryString.

email = Server.UrlEncode(aes.Encrypt(email));

Целевая страница выполняет Request.Querystring ["email"], UrlDecodes его, а затем расшифровывает.

    string email            = Server.UrlDecode(Request.QueryString["eId"]);
    string decemail         = aes.Decrypt(email);
    return decemail;

Очень странное поведение происходило, когда удалялся символ «+» и, следовательно, расшифровка заканчивалась неудачей.

Я попытался удалить код UrlDecode, но это не решило проблему.

Что решило проблему, так это:

        string email            = Request.QueryString["eId"].ToString();
        string decemail         = aes.Decrypt(email);
        return decemail;

Избавление от UrlDecode и вызов ToString () для строки запроса.

Кто-нибудь знает, почему это произошло? Вызывает ли Request.QueryString urlDecode по умолчанию? Я не думаю, что это так.

Кроме того, зачем в этом случае работать .ToString ()?

1 Ответ

4 голосов
/ 19 ноября 2009

Да, верно. Request.QueryString фактически возвращает строку, которая уже была декодирована с помощью URL.

Источники:

http://www.codeproject.com/KB/custom-controls/antiauto.aspx?msg=1475521

http://www.kamath.com/codelibrary/cl006_url.asp

...