zoukankan      html  css  js  c++  java
  • Base64简单原理

    Base64要求把每三个8bit的字节转换为四个6bit的字节(即3*8 = 4*6 = 24)

    1.例如我们有一个中文字符“中国(gb2312)”,转为十进制为:中-->54992,国-->47610

    2.将 中和国 的十进制转为对应的二进制位:‭1101011011010000‬   和   ‭1011100111111010‬

    3.逢6位划分后:‭110101 101101 000010 111001 111110 10‬‬ 

       此时按照Base64编码的规则,要满足3*8位拆分位4*6位。“中国”转为二进制后一共32位,需要“拼够”48位,所以不够的位需要在后面补0,最终逢六位划分后为:

     110101 101101 000010 111001 111110 100000 000000 000000

       根据(48-32)/48=1/3得出,通过Base64编码后,位数要比原来多1/3。

    4.  根据Base64编码表,找出对应的值

    110101 101101 000010 111001 111110 100000 000000 000000

    53         45         2           57        62        32        =            =

    根据Base64编码表转换后结果为:

    1           t            C          5          +           g         =           = 

    如果最终按六位划分后全是000000,则对应的编码为=(PS:之前一直不明白一些公钥的最后几位都是=)

    5. 根据Java代码将Base64解码出来

    public static void main(String[] args) throws IOException {
            BASE64Decoder base64Decoder =new BASE64Decoder();
            System.out.println(new String(base64Decoder.decodeBuffer("1tC5+g=="),"gb2312"));
        }

     输出结果为:中国

    6.附Base64编码表:

  • 相关阅读:
    Delphi 中多线程同步的一些处理方法
    delphi 讲的比较详细的多线程
    Delphi MSComm 实时串口通讯
    Delphi多线程数据库查询(ADO)
    常用学习链接收藏
    Linux目录及常用命令
    DEBUG和INFO的使用
    git命令
    9.9 接口与工厂
    9.4 Java中的多继承
  • 原文地址:https://www.cnblogs.com/GrapefruitTea/p/9961168.html
Copyright © 2011-2022 走看看