Base64编码

Base64

  • base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法
  • Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
  • 包括小写字母a-z、大写字母A-Z、数字0-9、符号"+“、”/"一共64个字符的字符集
  • base64不是加密算法,他只是一种编码方式,数据从一种形式转换为另一种形式进行传输/存储。

编码规则

  • 把3个字节变成4个字节。
  • 首先将字符串(图片等)转换成二进制序列,然后按每6个二进制位为一组,分成若干组,如果不足6位,则低位补0。每6位组成一个新的字节,高位补00,构成一个新的二进制序列,最后根据base64索引表中的值找到对应的字符。
  • Base64所有表如下:
索引对应字符索引对应字符索引对应字符索引对应字符
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47v
14O31f48w
15P32g49x
16Q33h50y
  • 举例
    • 转换前 10101101,10111010,01110110
    • 转换后 00101011, 00011011 ,00101001 ,00110110
    • 十进制 43 27 41 54
    • 对应码表中的值 r b p 2
    • 解码同理,把 rbq2 的二进制位连接上再重组得到三个8位值,得出原码。
  • 原始字符串不足三个字节,如两个字节"ab"
    • 按照上面的转换逻辑,经过编码转换,第三个字节只有4位,需要在第三组前后都要加两个0,转换后的字符串是 YWI。 为了凑齐4个字节,还要在末尾补上一个"="号,最后得到的base64编码就是: “YWI=”
  • 原始字符串不足三个字节,如一个字节"a"
    • 第二个字节除了前面补两个0,还要在后面补4个0,得到的字符串是YQ,剩下两个字节也用等号“=”来凑。所以a的base64编码就是 YQ==
  • 只要原始字符串的长度不能被3整除,后面的位都会用0来补充。

应用

  • Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的一个标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
  • Mozilla Thunderbird和Evolution用Base64来保密电子邮件密码
  • Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。
  • html中的图片用base64表示。浏览器中某些样式中的图片不是一个资源地址,而是base64编码的字符串,这么做有什么好处呢? 当然是减少了一次http的请求,但也并不是什么图片都适合用base64来处理,因为图片越大,转换的base64的字符串就越长,对带宽的要求更高了。
  • 除了基本的base64,还有一种url safe 形式的编码方式,目的是将“+/” 替换成 “-_”, 因为标准的Base64并不适合直接放在URL里传输,URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值