• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

理解 base64 编码 存在的意义

可打印

base64,就是将字节序列编写为可打印ascii字符,关键就集中在“可打印”三个字上。

计算机中数据存储使用二进制来表示,为了便于阅读,就需要指明哪些二进制数据代表哪个符号,于是ascii 由此诞生。但是 ascii 包含不可见的字符,在某些情况下可能被当做控制字符处理,从而传输错误

可移植性高

还有一些场景需要纯文本传输,比如:

  • 在 http 协议中使用 json 传输数据,如果需要提交文本参数图片,将图片转化为 ascii显然是有问题的,而 base64 则可以很好地处理

  • 在 http 响应时,也可以使用base64文件二进制数据字符数据一次返回

所以说 base64 的特点就在于可移植性高

假如你现在使用的是 MySQL5.5.3 之前的版本,意味着不支持utf8mb4字符集,倘若需要存储的文本中包含 emoji 表情,其中的一种方式就是使用base64编码再存储。

base64 介绍

base64 的字符集由0-9,a-z,A-Z,+,/,组成,=末尾填充。编码过程就是使用 4 字节的 base64 字符表示 3 字节的 ascii 字符

很容易理解,base64 有 64个字符,使用 6bit 表示ascii 有 256个字符,使用 8bit 来表示,两者的最小公倍数是 24,就是 4字节的 base64 字符 或者 3字节的 ascii字符。

转换过程如下,假设现在有个字符串“ab”,ascii 表示即 ‭01100001‬01100010,拆成 6bit 的 base64有3段,‬011000,01‬0110,001000,即“YWI”,由于不满4个字符,需要补一个=,最终是“YWI=”。


image.png


image.png

base64 误区: Base64不是加密算法

把Base64当做加密算法,这是不对的,他只是一种编码方式。便于传输。




参考:

https://blog.csdn.net/qq_35045184/article/details/105401566

https://www.zhihu.com/question/38036594/answer/74917716


0
0
下一篇:解决 qBittorrent 无速度:添加自定义 Tracker

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。