1. base64 不算是加密算法,只能说是一种转码。使用64 个可见的字符来代替 ASCII码 中的256 个字符。
2. ASCII码占用一个字节,可以有0~255共256个取值。前128个为常用的字符如运算符,字母 ,数字等 键盘上可以显示的后 128个为 特殊字符是键盘上找不到的字符。
3. ascII 有256 个 值,需要8个2进制未来表示(2^8=256),因为 某些字符不可见,并且有些数据传输的场景不支持 某些可见支付,所以 人们就想到用64 个基本的字符来代替所有的 数据。base64 应运而生。
4. 从ASCII 256 个字符 中挑选 出64 个字符,来代替原来所有的256个字符,这是base64 的核心。 64 (2^6) ,不能独立的表示一个完整的字符,6和8 的公倍数是24,所有用4个base64 的字符表示 3个 ascII 字符。
从存储的角度来说一个字节 是8 位,即便 base64 只用了64 个,但是它在计算机里面存储依旧用了8个字节。也就是说普通数据转化成base64 数据量会变大。变大大约4/3(不是总是4/3,因为原文不是3的整数倍的时候base64 会在后面用=占位)。
5.所以base64 就是 A-Z a-z 0-9 外加 + / 组成 ,使用= 占位 所以 base64 共有65 个字符。
6. 什么是base64urlsafe 编码。应为 某些请求的限定,不是使用 + / 所以把 +换成-,/ 换成 _ 。
7 ASCII 里面 一个 字符是8 位空间,8bit我们加做一个字节,base64 里面一个字符是6 位空间。