Base64编码及代码

BASE64编码是一种常用的将十六进制数据转换为可见字符的编码。与ASCII码相比,它占用的空间较小。BASE64编码在rfc3548中定义。

  

1、base64编解码原理

      关于这个编码的规则:

    1)把3个字符变成4个字符

  2)每76个字符加一个换行符

  3)最后的结束符也要处理

       

  将数据编码成BASE64编码时,3字符转4字符后,每个字符6bit,得到一个数字:0-63。但是由于0-63中有很多不可打印字符,需要进行二次映射,映射的规则就是

      0~25:A~Z

      26~51:a~z

      52~61:0~9

      62:+

      63:/

 

  比如有数据:0x30 0x82 0x02

  编码过程如下:

  1)得到16进制数据: 30 82 02

  2)得到二进制数据: 00110000 10000010 00000010

  3)每6bit分组: 001100 001000 001000 000010

  4)得到数字: 12 8 8 2

  5)根据查表得到结果 : M I I C

  

      BASE64填充:在不够的情况下在右边加0。

  有三种情况:

  1) 输入数据比特数是24的整数倍(输入字节为3字节整数倍),则无填充;

  2) 输入数据最后编码的是1个字节(输入数据字节数除3余1),即8比特,则需要填充2个"==",因为要补齐6比特,需要加2个00;

  3)输入数据最后编码是2个字节(输入数据字节数除3余2),则需要填充1个"=",因为补齐6比特,需要加一个00。

  举例如下:

  对0x30编码:

  1) 0x30的二进制为:00110000

  2) 分组为:001100 00

  3) 填充2个00:001100 000000

  4) 得到数字:12 0

  5) 查表得到的编码为MA,另外加上两个==

  所以最终编码为:MA==

 

2、Base64编解码,下面代码参考开源软件cyassl:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值