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字符

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM