一. 编码表
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
(这里有65个字符, 其中64个用于编码, 最后一个用于补齐使用, 这里是'=')
例子: 字符串"abc"的编码过程
明文: a, b c
十六进制: 0x61, 0x62, 0x63 (ASCII值)
二进制: 0110 0001, 0110 0010, 01100011 (把这三个八位的二进制数拆分为四个六位的二进制数)
(8 * 3 = 24 = 6 * 4; 刚刚好是6的整数倍)
(24是8和6的最小公倍数)
二进制: 011000, 010110, 001001, 100011 (这4个值就是编码的索引)
十进制: 24, 22, 9, 35
对应表值: Y, W, J, j
密文: YWJj
------------------------------------------------------------------------------------------
例子: 字符串"abcd"的编码过程
明文: a, b, c, d
十六进制: 0x61, 0x62, 0x63, 0x64
二进制: 0110 0001, 0110 0010, 0110 0011, 0110 0100
二进制: 011000, 010110, 001001, 100011, 011001, 000000
十进制: 24, 22, 9, 35, 25, 0
对应表值: Y, W, J, j, Z, A
密文: YWJjZA==
(明文的长度要是3的倍数, 否则, 如果差1才是3的倍数, 就要在密文后加1个符号(这里是'=');
如果差2才是3的倍数, 就要在密文后加2个符号(这里是'=');
------------------------------------------------------------------------------------------
例子: 字符串"abcde"的编码过程
明文: a, b, c, d, e
十六进制: 0x61, 0x62, 0x63, 0x64, 0x65
二进制: 0110 0001, 0110 0010, 0110 0011, 0110 0100, 0110 0101
二进制: 011000, 010110, 001001, 1