随波逐流工作室—-探索前沿科技,分享最新软件。点击标题下蓝字“长弓三皮”关注,我们将为您提供有深度、有价值、有意思的阅读。
朋友们,现在只对常读和星标的公众号才展示大图推送,建议大家把长弓三皮“设为星标”,否则可能就看不到了啦!
作者:随波逐流
生活如梦,我愿随风起,随波流,享受每一刻的自在与轻盈。
Base/Rot菜单
Base91 是一种相对较新的编码方式,Base91 的编码原理是将二进制数据转换为 91 个可打印字符组成的字符集来表示。它以一种更紧凑的方式对二进制数据进行编码,相较于一些常见的编码方式如 Base64 等,在相同的数据量下,Base91 编码后的字符串长度更短。
Base92加密:
执行路径:[随波逐流]CTF编码工具--Base/Rot--Base92加密
文本框输入明文,结果区输出密文。
明文:I_love_sbzl
Base92解密:
执行路径:[随波逐流]CTF编码工具--Base/Rot--Base92解密
文本框输入密文,结果区输出明文。
密文:;kvReh3mywh9XP
Base92 是一种数据编码方式,它在数据表示和传输等方面有着独特的特点和应用,以下是对 Base92 的详细介绍:
编码原理
Base92 的编码原理是将二进制数据转换为使用 92 个可打印字符表示的文本数据。它把输入的二进制数据按照一定的规则分组,通常是每 13 位一组,然后将每组二进制数转换为对应的十进制数。这个十进制数的范围是 0 到 8191,再将其映射到 Base92 的字符集中对应的字符,从而得到编码后的字符串。
字符集
Base92 的字符集包含了 92 个可打印字符,包括大小写字母、数字以及一些标点符号等,具体为
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+,./:;<=>?@[]^_
{|}~"` 。通过使用这样丰富的字符集,Base92 能够以更紧凑的方式表示二进制数据,相比一些常见的编码方式如 Base64 等,在相同数据量下编码后的字符串长度更短。
应用场景
数据存储优化:在数据存储时,若需要将二进制数据以文本形式保存,Base92 编码可以有效减少存储空间。因为其编码后的字符串相对更短,对于大量二进制数据的存储需求,如存储图像、音频等文件的二进制数据的文本表示,使用 Base92 编码能够节省存储资源。
数据传输效率提升:在数据传输过程中,较短的编码字符串意味着传输的数据量更小,从而提高传输效率,降低网络带宽占用和传输时间。特别是在网络带宽有限或传输成本较高的场景下,如物联网设备间的数据传输、远程数据备份等,Base92 编码有助于优化传输性能。
数据隐藏与混淆:Base92 编码后的字符串看起来较为随机,对于不了解编码规则的人来说,难以直接看出原始数据的内容,因此在一定程度上可用于简单的数据隐藏和混淆。例如在一些配置文件中对敏感信息进行编码存储,增加数据的保密性。
与其他编码方式的比较
与 Base64 比较:Base92 编码后的字符串长度通常比 Base64 更短,具有更高的编码效率,能更好地节省空间和传输带宽。然而,Base64 的字符集更为常见和简单,在一些对兼容性要求较高、需要广泛支持的场景中,Base64 可能更适用。
与 Base32 比较:Base92 的信息密度更高,相同数据量下编码后的字符串长度明显短于 Base32。Base32 虽然字符集更小,编码过程相对简单,但在数据表示效率上不如 Base92,适用于对准确性要求高且对数据长度不敏感的特定场景。
示例
假设我们有二进制数据 01101000 01100101 01101100 01101100 01101111
,将其进行 Base92 编码:
首先将二进制数据按 13 位一组划分,得到
0110100001100 101011011000 110110001101 111
(不足 13 位在左边补 0)。然后将每组转换为十进制数,分别为
1564
、2232
、3341
、7
。最后根据 Base92 字符集,得到编码后的字符串为
3e@c
。
Base92 编码以其高效的数据表示和一定的保密性,在特定的应用场景中为数据处理和传输提供了一种有效的解决方案,但在实际使用中需要根据具体需求权衡其与其他编码方式的利弊。
Base92 和 Base91 都是将二进制数据转换为可打印字符的编码方式,二者主要有以下区别:
字符集
Base91:使用的字符集包含所有的大写字母、小写字母、数字以及一些标点符号,如 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,./:;<=>?@[]^_{|}~"` ,共 91 个字符。
Base92:字符集同样包含大小写字母、数字和标点符号,但具体为 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+,./:;<=>?@[]^_{|}~"` ,总共 92 个字符,比 Base91 多了一个字符。
编码原理
Base91:将二进制数据按每 9 位一组进行划分,然后将每组 9 位二进制数转换为十进制数,该十进制数范围是 0 到 511,再根据 Base91 的字符集映射为对应的可打印字符。
Base92:把二进制数据按每 13 位一组来划分,将每组二进制数转换为十进制数,其范围是 0 到 8191,接着映射到 Base92 字符集中对应的字符来得到编码后的字符串。
编码效率
Base92:由于其每次处理 13 位二进制数据,相比 Base91 每次处理 9 位二进制数据,在相同数据量下,Base92 编码后的字符串长度通常更短,编码效率更高,能更有效地节省存储空间和传输带宽。例如,对于一段较长的二进制数据,使用 Base92 编码得到的字符串会比 Base91 编码得到的字符串更短。
应用场景偏好
Base91:适用于一些对数据保密性有一定要求,同时对编码效率要求不是极高的场景。比如在某些配置文件中对敏感信息进行简单编码存储,Base91 可以在一定程度上隐藏数据内容,同时其编码和解码相对简单,易于实现和使用。
Base92:更适合于对数据存储和传输效率要求较高的场景,如大规模数据的存储优化和网络传输优化等。在数据量较大且对空间和传输效率敏感的情况下,Base92 能够更好地发挥其优势,减少存储资源占用和传输时间。
兼容性
Base91:其字符集和编码方式相对 Base92 来说更为小众,在一些通用的系统和软件中可能支持度不如 Base64 等常见编码方式,但在特定的应用环境中,如果已经明确了对 Base91 的支持,那么它能够很好地满足需求。
Base92:虽然也不是像 Base64 那样被广泛支持,但由于其编码效率的优势,在一些新兴的或对数据处理有特定要求的领域和项目中逐渐得到应用,其兼容性也在不断提高。
Base92 和 Base91 在字符集、编码原理、编码效率、应用场景偏好以及兼容性等方面存在一定的差异,在实际使用中需要根据具体的需求和环境来选择合适的编码方式。
在CTF中一般使用python进行加解码
# Base92字符集
BASE92_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&'()*+,-./:;<=>?@[]^_`{|}~"
# 构建解码映射表
DECODE_MAP = {char: index for index, char in enumerate(BASE92_CHARS)}
def base92_encode(data):
"""将字节数据编码为Base92格式"""
encoded = []
value = 0
length = 0
for byte in data:
value = (value << 8) | byte
length += 8
while length >= 13:
length -= 13
encoded.append(BASE92_CHARS[(value >> length) & 0x1FFF])
if length > 0:
# 处理剩余的部分
encoded.append(BASE92_CHARS[value << (13 - length) & 0x1FFF])
return ''.join(encoded)
def base92_decode(data):
"""将Base92格式的数据解码为字节"""
decoded = bytearray()
value = 0
length = 0
for char in data:
value = (value << 13) | DECODE_MAP[char]
length += 13
while length >= 8:
length -= 8
decoded.append((value >> length) & 0xFF)
# 处理最后可能不足13位的部分
if length > 0:
length -= 13
decoded.append(((value >> length) & 0xFF) << (13 - length))
return bytes(decoded)
# 使用示例
if __name__ == "__main__":
original_bytes = b"Hello, World!"
print("Original Bytes:", original_bytes)
# Base92 编码
encoded_string = base92_encode(original_bytes)
print("Base92 Encoded:", encoded_string)
# Base92 解码
decoded_bytes = base92_decode(encoded_string)
print("Base92 Decoded:", decoded_bytes)
公众号内回复 writeup 或 flag 下载公众号文章
你若喜欢,为“长弓三皮”点个赞和在看哦
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...