密码学:编码概述.

密码学:编码概述.

目录:

密码学:编码概述.

编码的概念:

Base编码:

(1)Base64 

(2)Base32 和 Base16

(3)uuencode

(4)xxencode

其他编码

(1)URL编码

(2)jjencode和aaencode


编码的概念:

编码 (encode)和解码 (decode)是个相当广泛的话题,涉及计算机对信息处理的根本方式。最常用的编码是ASCII(美国信息交换标准代码),包含国际通用的大小写字母、数字、常见符号等,是互联网的通用语言。

另一种广为人知的编码是摩斯电码,它是一种时断时续的信号代码,是一种早期的数字化通信形式不同于只使用0和1两种状态的二进制代码,摩斯电码的代码包括如下:

◆ 点(·) : 基本单位;

◆ 划(-) : 为3个点的长度;

◆ 个字母或数字内,点与划之间的间隔: 2个点的长度;

◆ 字母(或数字) 之间的间隔: 7个点的长度;

一般来说,编码的目的是对原始信息进行一定处理,用于更方便地进行传输、存储等操作。但是编码不同于加密,并不是为了隐藏信息,也并没有使用到密钥等额外信息,只需知道编码方式就能得到原内容。

这种编码方式能把书面字符变为信号,大大方便了有线电报系统的通信.


Base编码:

(1)Base64 

Base64 是一种基于64个可打印字符来表示二进制数据的表示方法。2^6=64,所以每 6bit 为一个单元,对应某个可打印字符。3 字节有 24bit ,对应 4 个 Base64 单元,即 3 字节任意二进制数据可由 4 个打印字符来表示。在 Base64 中,可打印字符包括字母 A~Z、a~z 和数字 0~9,共 62 个字符,以及 +、/ 字符。Base64 常用于只能处理文本数据的场合,表示、传输、存一些二进制数据,包括 MIME 电子邮件、XML 复杂数据等。

在 base64 转换的时候,3 字节的数据先后放入一个 24 位的缓冲区中,先来的字节占高位 。

数据不足3字节,缓冲器中剩下的位用0补足。每次取出 6bit,按照其值选择中的字符作为编码后的输出,直到全部输入数据转换完成。若原数据长度不是 3 的倍数且剩下1个输入数据,则在编码结果后加 2 个 “ = ”,若剩下 2 个输入数据,则在编码结果后加 1 个 “=”。所以,识别 Base64 编码的一种方法是看末尾是否有 “ = ” 。但是这种识别方法并不是万能的,当编码的字符长度刚好是3的倍数时,编码后的字符串末尾不会出现 “=”

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

(2)Base32 和 Base16

Base 系列中还有 Base32 和 Base16 ,其实 Base32 / Base16 与 Base64 的目的一样,只是具体的编码规则不同。Base32 编码将二进制文件转换成 32 个 ASCII 字符组成的文本,转换表为

ABCDEFGHIJKLMNOPQRSTUVWXYZ234567

Base16 编码则将二进制文件转换成由 16 个字符组成的文本,这 16 个字符为 0~9和 A~F,其实就是 Hex 编码。


(3)uuencode

uuencode 衍生自 “unix-to-unix encoding” ,曾是 UNIX 系统下将二进制的资料借由 UUCP 邮件系统传输的一个编码程式,是一种二进制到文字的编码。uuencode 将输入字符以每3字节为单位进行编码,如此重复。如果最后剩下的字符少于 3 字节,不足部分用 0 补齐。与 Base64 一样, uuencode 将这 3 字节分为4组,每组以十进制数表示,这时出现的数字为 0~63 。此时将每个数加上 32,产生的结果刚好落在 ASCI 可打印字符的范围内。

经过 uuencode 编码过后的字符,可以看到 uuencode 的特征: 特殊符号很多.


(4)xxencode

xxencode 与 Base64 类似,只不过使用的转换表不同:

+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

只是多了“ - ”字符,少了“ / ”字符,而且 xxencode 末尾使用的补全符号为“ + ”,不同于Base64 使用的“ = ”.


其他编码

(1)URL编码

URL编码又称为 百分号编码。如果一个保留字符在特定上下文中具有特殊含义,且URI中必须使用该字符用于其他目的,那么该字符必须进行编码。URL编码一个保留字符,需要先把该字符的ASCII编码表示为两个十六进制的数字,然后在其前面放置转义字符“ % ”,置入URI中的相应位置(非ASCI字符需要转换为 UTF-8 字节序,然后每字节按照上述方式表示)。例如,如果“ / ”用于URI的路径成分的分界符,则是具有特殊含义的保留字符。如果该字符需要出现在URI一个路径成分的内部,,则应该用“ %2F ”或“ %2f ”来代替“ / ".


(2)jjencode 和 aaencode

jjencode 和 aaencode 都是针对 JavaScript 代码的编码方式。前者是将 JS 代码转换成只有符号的字符串,后者是将 JS 代码转换成常用的网络表情,本质上是对 JS 代码的一种混淆。

jjencode 编码后的效果:(大多都是 $$$ 号)

aaencode 编码后的效果:(大多都是 表情

        

       

        

学习书籍:从0到1:CTFer成长之路..

猜你喜欢

转载自blog.csdn.net/weixin_54977781/article/details/130524642