• C# 处理base64 以及base64的原理分析


    base64的原理,

    http://www.cnblogs.com/diligenceday/p/6002382.html

    http://www.cnblogs.com/chengxiaohui/articles/3951129.html

    base64的码表只有64个字符, 如果要表达64个字符的话,使用6的bit即可完全表示(2的6次方为64)。

    因为Base64的编码只有6个bit即可表示,而正常的字符是使用8个bit表示, 8和6的最小公倍数是24所以4个Base64字符可以表示3个标准的ascll字符

      public void Base64Test()
            {
                string abc = "abc";
                var array = Encoding.ASCII.GetBytes(abc);
                string result = Convert.ToBase64String(array);
                Console.WriteLine(result);
            }

    因为3个ASCII字符,才能和4个base64字符对应。如果ASCII字符不足3个,即不足24bit。

    从左往右,需要解析出至少4个字符,能解析的字符直接解析,无法解析的,直接用=表示。

    n*8/6

    比如单个字符A,转换为Base64。

    单个字符A,1个字节,8bit。

    字符A的对应的ASCII是十进制是65, 二进制是01000001。

    按照6bit进行拆分,得到010000 01,只能解析出2个字符010000 010000,还缺少2个base64的字符,直接解析为=。

    扩展:

    根据字节数组的长度,来计算加密后的字符长度,以及=的个数。


    字节数组长度为39,13*4=52;

    字节数组长度为40,40/3=13...1    13*4+4=56; 多出1个ASCII字符,可以解析2个base64字符,还要补上2个=。   8*1/6向上取整,所以解析2个base64字符。

    字节数组长度为41,41/3=13...2     13*4+4=56;多出2个ASCII字符,可以解析3个base64字符,还要补上1个=。   8*2/6向上取整,所以解析出3个base64字符

  • 相关阅读:
    iOS 数据存储
    iOS 中@property() 括号中,可以填写的属性?
    iOS 中关闭键盘方法
    iBeacons 资源汇总
    iOS7 下去掉状态栏(全屏)
    监听器HttpSessionListener
    监听器 HttpSessionBindingListener
    servlet 3.0 的使用
    工厂模式小例子 getDaoImp
    servlet和filter初始化
  • 原文地址:https://www.cnblogs.com/chucklu/p/10240750.html
Copyright © 2020-2023  润新知