zoukankan      html  css  js  c++  java
  • Base64编码后通过Url传值

    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('=', '.');
    }
    
  • 相关阅读:
    开发者入门必读:最值得看的十大机器学习公开课
    ansible 文件模块,很实用
    前端之Bootstrap框架
    47考题整理
    前端之jQuery
    前端之BOM和DOM
    python补充之进制转换、exec、eval、compile
    JavaScript
    css(2)
    前端之form表单与css(1)
  • 原文地址:https://www.cnblogs.com/tianlin/p/3244063.html
Copyright © 2011-2022 走看看