在我的应用程序中,我获取用户的电子邮件地址,对其进行加密,然后对其进行URLE编码,并将其传递给QueryString。
email = Server.UrlEncode(aes.Encrypt(email));
着陆页执行Request.Querystring [“email”],Url解码,然后解密。
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()在这个实例中工作?
答案 0 :(得分:4)
是的正确。 Request.QueryString实际上返回已经被url解码的字符串。
来源:
http://www.codeproject.com/KB/custom-controls/antiauto.aspx?msg=1475521