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

本文关键字:无效 数组 Base-64 字符 解密 | 更新日期: 2023-09-27 18:36:08

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

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

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

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

解码查询字符串值在解析为请求时已经完成。 尝试没有'HttpUtility.UrlDecode'

public static string decodeSTROnUrl(string thisDecode)
    {
        return Decrypt(thisDecode);
    }

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

sEncryptedString = sEncryptedString.Replace(' ', '+');