加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Base64简单原理

发布时间:2020-12-14 04:30:49 所属栏目:大数据 来源:网络整理
导读:Base64要求把每三个8bit的字节转换为四个6bit的字节(即3*8 = 4*6 = 24) 1.例如我们有一个中文字符“中国(gb2312)”,转为十进制为:中--54992,国--47610 2.将 中和国?的十进制转为对应的二进制位:?1101011011010000?? ?和? ??1011100222221010? 3.逢6位

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

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

2.将 中和国?的十进制转为对应的二进制位:?1101011011010000?? ?和? ??1011100222221010?

3.逢6位划分后:?110101 101101 000010 111001 222220 10???

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

 110101 101101 000010 111001 222220 100000 000000 000000

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

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

110101 101101 000010 111001 222220 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编码表:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读