Base64简单原理

2018-11-20 03:19:53来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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编码表:

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Spring Boot 集成 Shiro实现权限控制,亲测可用,附带sql

下一篇:【公众号转载】超详细 Nginx 极简教程,傻瓜一看也会!