Base64编码简介

Base编码使用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",再加上补齐长度的1个或2个"="号,共计65种字符

Base64编码后在Url中传递

查看Base64中的65种字符,其中有"="与"+"在Query String有特殊含意

"="用来连接参数名与其值

例如:..........?a=XY=Z, 则Request.QueryString["a"] 还能识别出来

"+"用来表示" "(空格)

例如:..........?a=X+Y, 则Request.QueryString["a"]的结果会变为"X Y"

这样经过Url传递后解码可能会出错

有"/"是Url中的目录符号,也不能直接出现在Url中

 

要在Url中传值,就必须将+、/、=替换掉。用来替换的字符只要是非Base64字符即可,也就是不在那65个字符中。

下面示例代码用的是*、-、.  (当然也可以用~、^等字符)

/// <summary>
/// 从适用于URL的Base64编码字符串转换为普通字符串
/// </summary>
public static string FromBase64StringForUrl(string base64String)
{
    string temp = base64String.Replace('.', '=').Replace('*', '+').Replace('-', '/');
    return Encoding.UTF8.GetString(Convert.FromBase64String(temp));
}

/// <summary>
/// 从普通字符串转换为适用于URL的Base64编码字符串
/// </summary>
public static string ToBase64StringForUrl(string normalString)
{
    return Convert.ToBase64String(Encoding.UTF8.GetBytes(normalString)).Replace('+', '*').Replace('/', '-').Replace('=', '.');
}

 

 

 

posted on 2013-08-07 19:38  田林九村  阅读(2936)  评论(1编辑  收藏  举报