2023.10.22
Base16的简介
Base16就是包括大写字母A-F,数字0-9组成的16个字符的字符集。任何符号都可以转换成这个字符集中的字符,这个转化过程就叫做Base64编码。
Base16实现方式
Base16是4个比特位表示一个字符,所以1个字节刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符。数据量是原先的2倍.
编码表
索引 | 字符 | 索引 | 字符 | 索引 | 字符 | 索引 | 字符 |
---|---|---|---|---|---|---|---|
0 | 0 | 4 | 4 | 8 | 8 | 12 | C |
1 | 1 | 5 | 5 | 9 | 9 | 13 | D |
2 | 2 | 6 | 6 | 10 | A | 14 | E |
3 | 3 | 7 | 7 | 11 | B | 15 | F |
编码过程
以flag为例
f | l | a | g | |||||
ASCII二进制 | 01100110 | 01101100 | 01100001 | 01100001 | ||||
合并 | 01100110011011000110000101100111 | |||||||
4bit为一组 | 0110 | 0110 | 0110 | 1100 | 0110 | 0001 | 0110 | 0111 |
对应编码表索引 | 6 | 6 | 6 | 12 | 6 | 1 | 6 | 7 |
对应编码表字符 | 6 | 6 | 6 | C | 6 | 1 | 6 | 7 |
转换结果 | 666C6167 |
解密脚本实现:
import base64
def base16_decode(ciphertext):
return base64.b16decode(ciphertext.encode('utf-8')).decode()