base(16 85 91 100)

1.base16编码也称为十六进制编码或Hex编码,是一种将二进制数据表示为十六进制数字和字符的方法。它使用16个字符(0-9和A-F)来表示4位二进制数的每个组合。

编码原理:

由于4bit就可以表示2^4 = 16个字符。所以用4bit可以表示所有的十六进制数。

1byte=8bit 所以1byte = 俩个十六进制数据。

这里就涉及一个字节序的问题:是用大端模式还是小端模式?Base16编码明确表明是用小端模式存储。

编码过程:

1.将二进制数据分割为4个一组

2.映射,将每四位二进制数据映射到对应的base16字符。

例如:FUFU---70 85 70 85---0100 0110 0101 0101 0100 0110 0101 0101---4 6 5 5 4 6 5 5---46554655.

2.base 85

1.Base85编码,也称为ASCII85编码,是一种将二进制数据转换为ASCII字符的编码方法。它通常用于在文本协议中传输二进制数据,尤其在Adobe的PostScript和PDF文件格式中使用。

原理:

准备要编码的二进制数据: 将要编码的二进制数据准备好,通常是字节的形式。

分组: 将二进制数据分成固定大小的组,每组通常为4字节(32位)。

将每个组的二进制数据转换为整数: 将每个4字节的二进制数据视为一个32位的二进制整数,然后将它转换为一个十进制整数。这个整数的范围通常是0到4294967295(2^32-1)。

Base85编码: 将每个十进制整数编码为Base85字符。

Base85字符集通常包括85个字符,通常是ASCII字符集中的可打印字符,除去易混淆的字符和可能引起歧义的字符。
以32位整数为例,将它分成5组,每组将被编码为5个Base85字符。
每个5个字符的组对应一个32位整数,根据其在Base85字符集中的位置来选择。
Base85编码的结果是一个文本字符串,其中包含一系列Base85字符,每5个字符分为一组,每组表示一个32位整数。
填充(可选): 如果原始数据的长度不是4字节的倍数,可以使用"z"字符作为填充字符,以确保编码长度是5的倍数。

例如:FUFU---7TDoX$3

3.base 91

1.Base91编码是一种将二进制数据转换为文本编码的方法,通常用于在文本协议中传输二进制数据。与Base64相比,Base91编码具有更高的数据密度,但编码后的文本相对较长。 

2.

原理:

准备要编码的二进制数据: 将要编码的二进制数据准备好,通常是字节的形式。

分组: 将二进制数据分成固定大小的组,每组通常为3字节(24位)。如果最后一组不足3字节,可以进行填充。

Base91编码: 将每个3字节的二进制数据编码为Base91字符。

Base91字符集通常包括91个字符,通常是可打印ASCII字符集中的字符,除去易混淆的字符和可能引起歧义的字符。
以24位的二进制数据为例,将其分成4组,每组将被编码为4个Base91字符。
每个4字符的组对应一个24位的整数,根据其在Base91字符集中的位置来选择。
Base91编码的结果是一个文本字符串,其中包含一系列Base91字符,每4个字符分为一组,每组表示一个24位整数。
填充(可选): 如果原始数据的长度不是3字节的倍数,可以使用一或多个填充字符来确保编码长度是4的倍数.

4.base 100

1.base100是一种对称加密,加密后全是emoji表情。

2.解码

由于不清楚原理,可以使用工具BASE100编码解码 - Bugku CTF平台

5.总结:

base16特征:由大写字母(A-Z)和数字(0-9)组成,通常不需要“=”填充

base85特征:有很多奇怪的符号,但一般没有“=”

base91特征:由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成

base100特征:全是emoji表情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值