BASE64

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BASE64相关的知识,希望对你有一定的参考价值。

base64是一种编码方式,用于把二进制数据编码为可写的字符形式的数据。

编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/

共64个字符:26 + 26 + 10 + 1 + 1 = 64。不足的时候需要用=来填充,也可以说是65个字符。

64个字符需要6位来表示,表示成数值为0~63。

技术分享

长度为3个字节的数据(每个8位)经过Base64编码后就变为4个字节。

即 3 * 8 / 6 = 4 。

以sun字符串为例,首先查看s、u、n的ascii码。

var_dump(ord(‘s‘));
var_dump(ord(‘u‘));
var_dump(ord(‘n‘));

int 115

int 117

int 110

技术分享

当 字节位数不是3的倍数时,例如2个字符,2*8 = 16 ,不是3的倍数,则需要在原数据后面添加1个或2个零值字节,使其字节数是3的倍数。

以su为例:

技术分享

其中红色部分的其实不是0,只是解释成0,不能按照上面的表中的A来计算。这样如果全部是补充的用=填充,如果有非填充的则用其他的,如果为0则为A。

php中ord()函数为,取得字符的ascii码。

经验证,和php中函数计算出来的结果是一样的。

面试被问了一堆关于base64和ascii码的转换的问题,记录下来充充电。

 

技术分享
技术分享

 

以上是关于BASE64的主要内容,如果未能解决你的问题,请参考以下文章

登录态 & SSO

什么是Base64加密?为什么要有Base64加密?

爬虫学习笔记(十五)——加密解密

Golang---BASE64编码原理

Base64编码原理分析

BASE64编码原理与Golang代码调用