4

在某些情况下,我通过 (decryption) 得到以下异常,我无法准确识别原因:

Base-64 字符数组的长度无效

我的代码:

public static string encodeSTROnUrl(string thisEncode)
{
  if (null == thisEncode)
      return string.Empty;

  return HttpUtility.UrlEncode(Encrypt(thisEncode));
}


// string thisDecode = "3Dn%2bsJJPXprU4%3d"; //this is the value which cause the exception.
public static string decodeSTROnUrl(string thisDecode)
{
   return Decrypt(HttpUtility.UrlDecode(thisDecode));
}


QueryStringEncryption.Cryptography.decodeSTROnUrl(Request.QueryString["val"].ToString());

引发异常的确切行是:

 Byte[] byteArray = Convert.FromBase64String(text);

我以为我通过在加密和解密操作之前和之后进行编码和解码来解决这个问题。但是有些值仍然抛出这个异常。


注意:我注意到一些奇怪的行为:作为查询字符串发送到我的邮件的 id 是:n%2bsJJPXprU4%3d并且它没有例外地工作..

以及有问题的用户发送的 url 包含3Dn%2bsJJPXprU4%3d

这是浏览器的问题吗??!!

4

2 回答 2

8

当它被解析到请求中时,已经完成了对查询字符串值的解码。尝试不使用“HttpUtility.UrlDecode”

public static string decodeSTROnUrl(string thisDecode)
    {
        return Decrypt(thisDecode);
    }
于 2012-06-04T09:52:58.303 回答
4

64 位编码在字符串中存在空格问题。加密后尝试添加以下内容

sEncryptedString = sEncryptedString.Replace(' ', '+');
于 2012-06-04T09:03:16.820 回答