在某些情况下(解密时),我会遇到以下异常,并且无法确定确切的原因:
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
这是浏览器问题吗?!
加密
和解密
的整个代码?很可能在两者之间进行了一些不适当的编码转换(ASCII、Unicode)。 - vgru