You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AES加密URL参数丢失'+'符号导致解密失败问题求助

解决URL参数中AES加密字符串的+被替换为空格的问题

问题原因

Base64加密后的字符串里的+符号,在URL规则中会被解析成空格,导致传递到收据页面的加密数据损坏,无法正常解密。

修复方案

1. 支付页面:对加密结果做URL编码

生成跳转URL前,必须把加密后的字符串转换成URL安全的格式,避免特殊字符被错误解析。修改后的代码如下:

string fn = txtdonorname.Text.Trim(); // 待加密数据
string encryptedUs = Encryption(us); // 执行AES加密
string encodedUs = HttpUtility.UrlEncode(encryptedUs); // 对加密结果进行URL编码
string redirectUrl = string.Format("../4home/creceipt.aspx?us={0}", encodedUs);
string script = $"setTimeout(function() {{ window.location.href = '{redirectUrl}'; }}, 4000);";
ClientScript.RegisterStartupScript(this.GetType(), "RedirectScript", script, true);

注:原代码里string.Format用了{1}但只传了一个参数,这里修正为{0}避免格式错误。

2. 收据页面:直接获取参数即可

Request.QueryString会自动对URL编码的内容解码,还原出原始的加密字符串,无需额外处理:

string us = Request.QueryString["us"];
// 这里直接用us进行AES解密操作即可
lbluname.Text = us; // 此时us会是完整的c9Qj2sFpCM9A+s6YbT4nPg==

额外说明

除了+,Base64中的/、=等字符也属于URL特殊字符,URL编码会统一处理这些字符,确保加密数据完整传递到目标页面。

内容的提问来源于stack exchange,提问作者danny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:34:57