Base64算法 編碼過程和原理

    Base64作爲一個歷史悠久的算法,起初是爲了電子郵件的傳輸而創立。因爲它的算法和對應表公開,  所以Base64從嚴格意義上來說並不能算是現代加密算法。


    如今學習Base64的意義在於 ,以它爲例,學習單表置換算法。而且Base64經過改造後,可以達到加密的效果。


    對於Base64算法來說,字符原本的編碼格式很重要(這點可在後文算法的詳細步驟中看出),不同的編碼對結果影響差別很大。

  

  具體步驟:


  1)字符串以字符爲單位轉換爲對應編碼

    這裏以ASCII碼來舉例:取三個字符爲一組,按照ASCII的錶轉化爲24位二進制數字。


      注意:24位二進制很重要,這就是爲什麼要以三個字符爲一組的原因。 所以在其他編碼形式(如用到漢字時的GBK、UTF-18)從24位二進制倒推回編碼前所要求的字符個數(如UTF-18裏一個漢字是2-4個字節,當一個漢字爲三字節時,就以這一個漢字爲一組)

  


   這裏只列了兩個字符,有助於理解算法中是如何補位的


  2)編碼轉換爲二進制

         十進制轉二進制



  3)3個8位二進制,轉爲4個6位二進制

       分組方式改變,例子如下


       分到第三個時,剩下的不夠6位,在後面補零


  4)4個6位二進制分別在高位加2個0

       至此變爲4個8位二進制,也就解釋了base64編碼後字符創的長度會增加三分之一左右。



  5)4個8位二進制轉爲十進制

       二進制轉十進制

 


  6)依據Base64的字符錶轉化

        64個字符對應0到63的數字。而Base64的名字正是由此而來。(還有Base32、Base16算法)   


最後還應加上=,等號是用來補位的。



    綜上所述,輸入Me,經過編碼後得出TWU=

    

    解碼的過程不再贅述,按編碼方法倒推即可。


    網上有在線的Base64自動編碼器,自己手工算過後,可以對照進行檢查。

   

    本篇主要是爲了瞭解此算法的原理,在實際應用操作中使用兩個方法(對於Java)就可以完成,這部分以後會說。


    這篇文章爲博主原創,未經允許不得轉載。

    有什麼不足請多多指出,一起學習進步~~




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章