Base 家族

不同的 Base 系列编码主要区别在于:编码所用到的字符数量不同


自动化工具(BaseCrack)

BaseCrack 的帮助下,可以自动识别出 Base 系列的加密,并且还可以一次性对任意模式下的多重 Base 编码数据进行解码

BaseCrack 下载地址:basecrack
安装依赖文件:pip3 install -r requirements.txt
运行:python basecrack.py


Base64

64 = $2 ^ {6}$,每 6bit 为一个单元, 使用 64 个 ASCii 可打印字符(字母 A-Z、字母 a-z、数字 0-9 和 ‘+’、’/‘)

  • 码表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ (另外,'=' 用作填充)
  • 经过 Base64 编码后的字符串长度一定会被4整除(长度包括后缀等号)
  • 由于 8bit 数据按照 6bit 切分不一定整除,末尾可能会出现 1 或 2 个 '=',但 '=' 不超过两个

Base16

16 = $2 ^ {4}$,每 4bit 为一个单元,使用 16 个 ASCii 可打印字符(字母 A-F、数字 0-9)

  • 由于 8bit 数据按照 4bit 切分刚好是 2 组,所以 Base16 不可能用到填充符号 '='

Base32

32 = $2 ^ {5}$,每 5bit 为一个单元,使用 32 个 ASCii 可打印字符(字母 A-Z、数字 2-7)


base36

使用 36 个 ASCii 可打印字符(数字 0-9,26 个字母:A-Z 或 a-z)

  • 加密仅支持整数数字,解密仅支持字符串,不支持中文

Base58

使用 58 个 ASCii 可打印字符(Base64 除去数字 '0',大写字母 'O''I',小写字母 'l',和 '+''/'


Base62

使用 62 个 ASCii 可打印字符(数字 0-9、字母 A-Z 和字母 a-z)


Base91

使用 91 个 ASCii 可打印字符,从 ASCii 字符(0x21 - 0x7E)中除 -(0x2D)、\(0x5C)、'(0x27)外的其他 91 个可打印字符组成


MD5

MD5 值是 32位 由数字 0-9,字母 a-f 组成的字符串(也有可能是 16 位

  • MD5 散列结果是 128bit 固定长度的二进制数据,然后将每 4 个二进制数据转化为 1 个十六进制数据,因此,128 位二进制数据转化为 32 个十六进制数据(128 / 4 = 32),最终以字符串形式呈现

URL 编码

URL 编码中只允许包含英文字母、数字、4 个特殊字符:- _ . ~ 和所有的保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]

  • URL 编码后的字符串中含有一些特殊的字符,比如 '%''+' 等,

Brainfuck

Brainfuck 是一种极简单的编程语言,它只包含 8 个命令字符,并且没有任何高级语言的概念,比如函数、变量等

字符含义
>移动指针到向右一个内存单元
<移动指针到向左一个内存单元
+将当前内存单元加 1
-将当前内存单元减 1
.输出当前内存单元的值
,从输入读入一个字符,并将其赋值给当前内存单元
[如果当前内存单元的值为 0,则跳转到对应的 ] 之后
]如果当前内存单元的值不为 0,则跳转到对应的 [ 之前
  • '>''<''+''-''.'',''['']' 八种符号组成
  • 例如:
    明文 Hello World!,加密后密文为:++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Ook!

Ook! 是 Brainfuck 的一种变体,它同样只包含 8 个命令字符,但是两两成对,每对命令字符组成一个 “Ook” 单元

符号含义
Ook? Ook.移动指针到向右一个内存单元
Ook. Ook?移动指针到向左一个内存单元
Ook. Ook.将当前内存单元加 1
Ook! Ook!将当前内存单元减 1
Ook! Ook.输出当前内存单元的值
Ook. Ook!从输入读入一个字符,并将其赋值给当前内存单元
Ook! Ook?如果当前内存单元的值为 0,则跳转到对应的 Ook? Ook! 之后
Ook? Ook!如果当前内存单元的值不为 0,则跳转到对应的 Ook! Ook? 之前
  • Ook! 和 Brainfuck 的主要区别在于其命令字符是成对出现的,以及 Ook! 的输出是单个字符,而不是 ASCii 码
  • 特点是字符串中存在很多 '.''!''?' 符号

凯撒密码

凯撒密码一般适用于 26 个英文字母,根据对字符串中的字符进行移位来实现加密

例如,当偏移量为 3 时,A 被替换成 D,B 被替换成 E,Z 被替换成 C


Rabbit

Rabbit 加密开头部分通常为:U2FsdGVkX1

  • 明显密文里​​ '+' 比较多,并且经常有 '/'
  • 例如:
    明文 “I Love You 521”,无密钥,加密后密文为:__U2FsdGVkX1__9DvuEo5PvBA8TuLrM2t+EZBvUkzlAa
    明文 “I Love You 521”,密钥为 666,加密后密文为:__U2FsdGVkX1__8w6vxXxux/ivRVwo3xMzTxmUyk7cHz

兽语编码

用动物的拟声词或语气词作为加密内容

  • 例如:
    明文 “我喜欢你”,加密后密文为:呜嗷呜啊嗷呜嗷啊呜啊啊啊呜嗷呜嗷嗷嗷呜嗷~~啊

摩斯密码

摩斯密码使用点 '.' 和划线 '-' 两种符号表示摩斯电码中的点和线

  • 有时会出现在杂项的音频隐写中,一般在波谱中,用较宽的代表 '-',用较窄的代表 '.',而中间的间隔代表 '/'

各种加密方法的特点_摩斯密码1.png