前言:
对于刚接触base64编码的肯定有很多疑问:
-
base64编码是什么?
-
base64编码应用场景?
-
base64编码优缺点?
-
我们能用base64编码做什么?
我也不是很懂呢,咱们一起来看看吧
base64编码是什么?
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。
以上摘自百度,有点看不懂哈。
但是我们知道的是
-
base64是一个二进制方法,使用64个字符来对任意数据进行编码
-
因为
=
字符并不在Base64编码索引表中,其意义在于结束符号,在Base64解码时遇到=
时即可知道一个Base64编码字符串结束。(如果Base64编码字符串不会相互拼接再传输,那么最后的=
也可以省略)
base64编码应用场景?
Mozilla Thunderbird和Evolution用Base64来保密电子邮件密码
垃圾讯息传播者用Base64来避过反垃圾邮件工具,因为那些工具通常都不会翻译Base64的讯息。
Base64 也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。
以上仅供了解
我们正常生活中,遇到的一般是
-
某些下载链接(比如迅雷:这个偏向URL编码)
-
某些网站的简单小图片
这是今天(12.11)在京东上找的,base64非常明显,哈哈
-
数字证书签名(做网站的一般都知道)
base64编码优缺点?
优点
-
以字符串的方式存储,避免不必要的外部资源加载,增加效率
-
减少一些对中文乱码的兼容问题
-
能够对文本进行简单的加密
-
避免了某些命名重复的情况
-
算法可逆, 解码很方便
缺点
-
字符长度增加,越大则需要传输越多的字符,传输时间越长(不建议用太大的图片)
-
只能作为简单加密方式,不能直接用作加密
Base64编码表
码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | A | 8 | I | 16 | Q | 24 | Y | 32 | g | 40 | o | 48 | w | 56 | 4 |
1 | B | 9 | J | 17 | R | 25 | Z | 33 | h | 41 | p | 49 | x | 57 | 5 |
2 | C | 10 | K | 18 | S | 26 | a | 34 | i | 42 | q | 50 | y | 58 | 6 |
3 | D | 11 | L | 19 | T | 27 | b | 35 | j | 43 | r | 51 | z | 59 | 7 |
4 | E | 12 | M | 20 | U | 28 | c | 36 | k | 44 | s | 52 | 0 | 60 | 8 |
5 | F | 13 | N | 21 | V | 29 | d | 37 | l | 45 | t | 53 | 1 | 61 | 9 |
6 | G | 14 | O | 22 | W | 30 | e | 38 | m | 46 | u | 54 | 2 | 62 | + |
7 | H | 15 | P | 23 | X | 31 | f | 39 | n | 47 | v | 55 | 3 | 63 | / |