【学习笔记】Base64编码解码原理及手动实现(C#)

时间:2023-12-17 16:41:02

1.【Base64编码原理】@叶落为重生

-base64的编码都是按字符串长度,以每3个8bit的字符为一组,
-然后针对每组,首先获取每个字符的ASCII编码,
-然后将ASCII编码转换成8bit的二进制,得到一组3*8=24bit的字节
-然后再将这24bit划分为4个6bit的字节,并在每个6bit的字节前面都填两个高位0,得到4个8bit的字节
-然后将这4个8bit的字节转换成10进制,对照Base64编码表 (下表),得到对应编码后的字符。

(注:1. 要求被编码字符是8bit的,所以须在ASCII编码范围内,\u0000-\u00ff,中文就不行。
   2. 如果被编码字符长度不是3的倍数的时候,则都用0代替,对应的输出字符为=)

【学习笔记】Base64编码解码原理及手动实现(C#)

比如举下面两个例子:

a) 字符长度为能被3整除时:比如“Tom” :

【学习笔记】Base64编码解码原理及手动实现(C#)
            T           o           m
ASCII: 84 111 109
8bit字节: 01010100 01101111 01101101
6bit字节: 010101 000110 111101 101101
十进制: 21 6 61 45
对应编码: V G 9 t
【学习笔记】Base64编码解码原理及手动实现(C#)

所以,code('Tom') = VG9t

b) 字符串长度不能被3整除时,比如“Lucy”:

L           u           c           y
ASCII:
8bit字节:
6bit字节:
十进制: (异常) (异常)
对应编码: T H V j e Q = =