4

在我的应用程序中,我获取用户的电子邮件地址,对其进行加密,并对其进行 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() 在这种情况下会起作用?

4

1 回答 1

4

是的正确。Request.QueryString 实际上返回已经被 url 解码的字符串。

资料来源:

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

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

于 2009-11-18T22:54:54.900 回答