BASE64编码原理解析

原理

1.每个字符按照ASCII编码对应一个8bit,以3字符为一组

2.3*8=24,分成4份,每份6bit,在每份高位添加00,重新合成一个4份8bit数据

3.新的4份8bit数据换算成10进制,得到4个数字

4.根据下面的Base64编码表,得到对应的新的字符

举例:SJJ(能被3整除)

  S J J  
ASCII 83 74 74  
8bit 01010011 01001010 01001010  
6bit 010100 110100 101001 001010
新8bit 00010100 00110100 00101001 00001010
10进制 20 52 41 10
结果 U O p K

举例:GOOD(不能被3整除)

  G O O D        
ASCII 71 79 79 68        
8bit 01000111 01001111 01001111 01000100 00000000 00000000    
6bit 010001 110100 111101 001111 010001 000000 000000 000000
新8bit 00010001 00110100 00111101 00001111 00010001 00000000 00000000 00000000
10进制 17 52 61 15 17 0 0 0
结果 R 0 9 P R A = =

最后两位纯粹是自动补齐,所以不能直接换成A,而是用特殊符号=进行表示。

java调用

BASE64Encoder encode = new BASE64Encoder();
String base64 = encode.encode(str);

BASE64Decoder decoder = new BASE64Decoder();
String str = new String(decoder.decodeBuffer(base64));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值