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