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)就可以完成,这部分以后会说。


    这篇文章为博主原创,未经允许不得转载。

    有什么不足请多多指出,一起学习进步~~




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