介绍一些常见的编码,包含 Base64 隐写原理。

连字都看不懂,写什么博客?

ASCII

乱码的原因:编码体系不同

  • 1 byte 表示 8 bits
  • 第一位规定为 0,剩下 7 位组成 128 个字符

GB series

首位不为 0,与 ASCII 兼容

GB2312/GBK

GB18030

Unicode

符号集,定长编码,计算机内存中统一使用

容纳所有符号,解决乱码问题

浪费空间

UTF-8

UTF-8 是 Unicode 的最广的实现方式

兼容ASCII

Base64

Base64加密

其实就是把文本 ascii 分为每 6 个一组编码,若不是 6 的倍数就加 0,加 2 个 0 添 1 个 =

  1. 将每 3 bytes 分为一组,共 24 bits

  2. 将 24 bits 分为 4 组,每组 6 bits

  3. 每组前加 2 个 00,扩展为 32 bits,分成四组,按下列表格编码转换

    索引 对应字符 索引 对应字符 索引 对应字符 索引 对应字符
    0 A 17 R 34 i 51 z
    1 B 18 S 35 j 52 0
    2 C 19 T 36 k 53 1
    3 D 20 U 37 l 54 2
    4 E 21 V 38 m 55 3
    5 F 22 W 39 n 56 4
    6 G 23 X 40 o 57 5
    7 H 24 Y 41 p 58 6
    8 I 25 Z 42 q 59 7
    9 J 26 a 43 r 60 8
    10 K 27 b 44 s 61 9
    11 L 28 c 45 t 62 +
    12 M 29 d 46 u 63 /
    13 N 30 e 47 v    
    14 O 31 f 48 w    
    15 P 32 g 49 x    
    16 Q 33 h 50 y    

Base64 解码

  1. 转换成每个字符对应的十进制
  2. 将十进制数字转换为 6 位 bits
  3. 删去 num(‘=’) * 2 bits
  4. 将 bits 转为 bytes

故出现 base64 隐写