Base64编码后通过Url传值_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Base64编码后通过Url传值

Base64编码后通过Url传值

 2013/8/7 21:08:28  田林九村  博客园  我要评论(0)
  • 摘要:Base64编码简介Base编码使用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",再加上补齐长度的1个或2个"="号,共计65种字符Base64编码后在Url中传递查看Base64中的65种字符,其中有"="与"+"在QueryString有特殊含意"="用来连接参数名与其值例如:..........?a=XY=Z,则Request.QueryString["a"]还能识别出来"+"用来表示""(空格)例如
  • 标签:URL ASE 编码

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个字符中。

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

class="brush:csharp;collapse:true;;gutter:false;">/// <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('=', '.');
}

 

 

 

上一篇: Asp.Net MVC 实用视频教程 下一篇: 没有下一篇了!
发表评论
用户名: 匿名