携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
Base64
Base64就是一种基于64个字符串来表示二进制数据的编码算法
二进制数据
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”
算法
将原数据每 6 位对应成 Base 64 索引表中的⼀个字符编排成⼀个字符串(每个字符8位)
Base64索引表
示例
Man进行base编码
| 文本 | M | a | n |
|---|---|---|---|
| ASCII编码 | 77 | 97 | 110 |
| 二进制位 | 01001101 | 01100001 | 01101110 |
把二进制按照6位划分
| 索引 | 19 | 22 | 5 | 46 |
|---|---|---|---|---|
| base64编码 | T | W | F | u |
备注:
- Base64编码方法要求把每三个8Bit的字节转换为四个6Bit的字节,其中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上成为一个字节。因此Base64所造成数据冗余不是很严重,Base64是当今比较流行的编码方法,因为它编起来速度快而且简单
Base64的用途
-
将⼆进制数据扩充了储存和传输途径(例如可以把数据保存到⽂本⽂件、可以通过聊天对话框或短信形式发送⼆进制数据、可以在 URL 中加⼊简单的⼆进制数据)
-
普通的字符串在经过 Base64 编码后的结果会变得⾁眼不可读,因此可以适⽤于⼀定条件下的防偷窥(较少⽤)
Base64的缺点
因为⾃身的原理(6 位变 8 位),因此每次 Base64 编码之后,数据都会增⼤约1/3,所以会影响存储和传输性能。
变种:Base58
⽐特币使⽤的编码⽅式,去掉了 Base64 中的数字 "0",字⺟⼤写 "O",字⺟⼤写"I",和字⺟⼩写 "l",以及 "+" 和 "/" 符号,⽤于⽐特币地址的表示。
Base58 对于 Base64 的改动,主要⽬的在于⽤户的便捷性。由于去掉了难以区分的字符,使得 Base58 对于「⼈⼯抄写」更加⽅便。另外,去掉了 "+" "/" 号后也让⼤多数的软件可以⽅便双击选取。