1 c# asp.net base64 request.querystring
我正在加密文本并通过QueryString发送它.
"8ZnSq13yv2yYVDsehDnNUNp/yIFqsAQh4XNPbV1eLMpk/dMWpc/YnMMEBy29MlgcYqpV2XPOf/Rpiz5S85VN/fkLbGTCkL/clBHh983Cp s="
Run Code Online (Sandbox Code Playgroud)
Decrypt函数如下所示
public static string Decrypt(string stringToDecrypt)//Decrypt the content
{
try
{
byte[] key = Convert2ByteArray(DESKey);
byte[] IV = Convert2ByteArray(DESIV);
int len = stringToDecrypt.Length;
byte[] inputByteArray = Convert.FromBase64String(stringToDecrypt);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = Encoding.UTF8; return encoding.GetString(ms.ToArray());
}
catch (System.Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
第3个最后一个字符是一个空格.我猜它是+在它被放在查询字符串之前的原始版本.+是表示空格的URL上的特殊字符,因此QueryString将其转换为您的空间.
尝试传递Base64字符串
Server.UrlEncode(string);
Run Code Online (Sandbox Code Playgroud)
在重定向之前,它将正确地将+转换为%urlchar,然后将其传递通过
Server.UrlDecode(string);
Run Code Online (Sandbox Code Playgroud)
在解析它之前