随波逐流工作室—-探索前沿科技,分享最新软件。点击标题下蓝字“长弓三皮”关注,我们将为您提供有深度、有价值、有意思的阅读。
朋友们,现在只对常读和星标的公众号才展示大图推送,建议大家把长弓三皮“设为星标”,否则可能就看不到了啦!
作者:随波逐流
生活如梦,我愿随风起,随波流,享受每一刻的自在与轻盈。
Base/Rot菜单
[随波逐流]CTF编码工具第一个菜单是Base/Rot,主要包含Base和Rot的加解密功能。
"Base编码"是一个泛称,指的是将数据从一种格式或编码系统转换为另一种基于不同字符集的编码系统的过程。在计算机科学中,最常见的Base编码包括Base64、Base32和Base16(十六进制),它们都是用于在不同的系统和网络中传输二进制数据的编码方案。
Base
这个词在数学中通常用来描述计数系统的 基数
,基数即计数系统中用于表示数字的不同符号的数量
。
Base 在 计算机编码系统
中则用于表示该编码系统所使用的字符集的大小。Base
描述了该系统的基数,而后面的数字表示这个 基数的具体值
。这样的命名方法 直观地
告诉我们这个编码系统使用了多少种不同的字符来表示数据。
Base16 编码系统:Base16 编码系统中使用 十六个字符 来对数据进行编码。
Base64 编码系统:Base64 编码系统中使用 六十四个字符 来对数据进行编码。
为什么需要 Base 编码?
Base 编码能够将 二进制数据转换为文本表示
,以便在不同的环境中使用。
1、便于数据查看
2、适应字符集限制
3、确保数据完整性
介绍“Base编码”就离不开“ASCII编码”。
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字和一些控制字符。ASCII是计算机、通信设备和相关设备中最基本的编码系统之一,它定义了128个字符的编码,这些字符包括:
控制字符:共32个,用于控制数据流和设备操作,如换行(LF,ASCII码为10)和回车(CR,ASCII码为13)。
可打印字符:共96个,包括:
大写字母:A-Z(ASCII码为65-90)
小写字母:a-z(ASCII码为97-122)
数字:0-9(ASCII码为48-57)
标点符号:包括空格(ASCII码为32)和其他标点符号(如逗号、句号、分号等)
非打印字符:共8个,包括退格(ASCII码为8)和删除(ASCII码为127)等。
世界上存在许多的编码方案,但这些方案大多是 基于 ASCII 编码进行扩展的,因此 ASCII 编码也被认为是 字符编码的基础。
还有扩展 ASCII 字符集:利用了单个字节中的空余二进制位,将 ASCII 字符提升到了 256 个之多。
ASCII编码的特点
简单性:ASCII编码简单直观,易于理解和实现,是计算机编程和数据通信的基础。
兼容性:ASCII编码被广泛支持,几乎所有的计算机系统和编程语言都内置了对ASCII的支持。
有限性:ASCII编码只能表示128个字符,这限制了它在表示非英文字符和特殊符号时的能力。
ASCII编码的应用
文本文件:ASCII编码被用于存储纯文本文件,如TXT文件。
数据通信:在早期的计算机网络和通信协议中,ASCII编码被广泛用于传输文本数据。
编程语言:大多数编程语言都使用ASCII编码来表示源代码中的字符和字符串。
控制台和终端:在控制台和终端中显示文本时,ASCII编码被用来确定字符的显示方式。
ASCII编码的局限性
语言支持不足:ASCII编码主要支持英文字符,对于其他语言和符号的支持有限。
字符集扩展:由于ASCII编码的局限性,后来出现了扩展的字符集,如ISO 8859-1(Latin-1)和Unicode,以支持更多的字符和语言。
ASCII编码与Unicode的关系
随着计算机技术的发展和全球化的推进,ASCII编码的局限性逐渐显现。为了支持更多的语言和符号,Unicode应运而生。Unicode是一个更大的字符编码系统,它包含了ASCII编码作为其一部分(Unicode的前128个代码点与ASCII编码完全相同)。这样,ASCII编码可以被视为Unicode的一个子集。
总的来说,ASCII编码是计算机和通信领域中最基本的字符编码系统之一,尽管它的使用已经不如以前广泛,但它仍然是理解现代字符编码系统的重要基础。
Unicode(统一码、万国码、单一码)是一种在计算机上广泛使用的字符编码,旨在解决传统字符编码方案的局限,为每种语言中的每个字符设定了统一且唯一一的二进制编码,以满足跨语言、跨平台进行文本转换和处理的需求。
Unicode 的起源和发展
Unicode 诞生于 1987 年,最初是为了解决传统编码方案(如 ASCII)只能表示有限字符集的问题。随着互联网的兴起和全球化的加速,需要一个能够支持多语言的统一编码系统,Unicode 应运而生。
Unicode 的目标
Unicode 的主要目标包括:
唯一性:每个字符只有一个编码。
统一性:所有软件和系统都使用相同的编码。
通用性:支持全球所有书写系统。
兼容性:与现有的编码方案兼容,如 ASCII。
可扩展性:可以容纳新的字符和符号。
Unicode 的结构
Unicode符号表:https://symbl.cc/cn/unicode-table/
BMP(Basic Multilingual Plane):第一个平面,包含最常用的字符,如拉丁字母、希腊字母、西里尔字母、阿拉伯字母、希伯来字母、汉字等。
SMP(Supplementary Multilingual Plane):包含较少使用的字符,如古埃及象形文字、古美索不达米亚楔形文字等。
其他平面:包括用于表情符号、额外的符号和图形等的平面。
Unicode 的编码方式
Unicode 字符可以通过多种编码形式(encoding forms)来表示,最常见的包括:
UTF-32:每个 Unicode 字符使用固定长度的 4 个字节(32 位)来表示。
UTF-16:每个 Unicode 字符使用可变长度的 2 或 4 个字节来表示。
UTF-8:每个 Unicode 字符使用可变长度的 1 到 4 个字节来表示,基于 ASCII 编码,向后兼容。
UTF-8 的优势
UTF-8 是 Unicode 的一种实现方式,它具有以下优势:
兼容性:UTF-8 与 ASCII 编码兼容,ASCII 字符在 UTF-8 中占用一个字节。
效率:对于英文文本,UTF-8 只需要一个字节,与 ASCII 相同,对于其他语言的字符则需要更多的字节。
可扩展性:UTF-8 可以表示 Unicode 中的所有字符,包括未来的扩展。
网络优化:UTF-8 在网络上传输时更加高效,因为它避免了字节序的问题。
Unicode 的应用
Unicode 被广泛应用于:
操作系统:如 Windows、macOS、Linux 等。
编程语言:如 Java、C#、Python 等。
数据库:如 MySQL、PostgreSQL 等。
网页和互联网:HTML5 和 XML 都使用 Unicode 编码。
Unicode 的挑战
尽管 Unicode 为全球语言的数字化提供了一个统一的平台,但它也面临着一些挑战,如:
复杂性:Unicode 包含大量的字符和属性,使得实现和维护变得复杂。
性能问题:对于某些应用,处理大量 Unicode 数据可能会带来性能上的挑战。
显示和渲染:不同的字体和渲染引擎在显示 Unicode 字符时可能会有所不同。
总的来说,Unicode 是一个强大的编码系统,它使得全球各种语言的数字化和计算机处理成为可能,为全球化的沟通和信息交换提供了基础。
编码Unicode字符串为UTF-8
# 假设我们有一个Unicode字符串
unicode_string = "Hello, 世界!"
# 使用encode方法将Unicode字符串编码为UTF-8
utf8_encoded = unicode_string.encode('utf-8')
# 打印结果,你会看到UTF-8编码的字节序列
print(utf8_encoded) # 输出: b'Hello, xe4xb8x96xe7x95x8c!'
如果你有一个UTF-8编码的字节序列,可以使用decode方法将其解码回Unicode字符串:
# 假设我们有一个UTF-8编码的字节序列
utf8_bytes = b'Hello, xe4xb8x96xe7x95x8c!'
# 使用decode方法将UTF-8字节序列解码为Unicode字符串
unicode_string = utf8_bytes.decode('utf-8')
# 打印结果,你会看到原始的Unicode字符串
print(unicode_string) # 输出: Hello, 世界!
在读写文件时,你也可以指定使用UTF-8编码:
# 写入UTF-8编码的文件
with open('example.txt', 'w', encoding='utf-8') as f:
f.write("Hello, 世界!")
# 读取UTF-8编码的文件
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content) # 输出: Hello, 世界!
在Python 3中,默认的字符串类型是Unicode,而在Python 2中,默认的字符串类型是ASCII。因此,在Python 3中,处理UTF-8编码通常更加直观和方便。在Python 2中,你需要更多地关注编码和解码,因为字符串和字节是两种不同的类型。
公众号内回复 writeup 或 flag 下载公众号文章
你若喜欢,为“长弓三皮”点个赞和在看哦
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...