关于ctf:二进制安全CTF中那些古典密码

3次阅读

共计 2361 个字符,预计需要花费 6 分钟才能阅读完成。

一. 古典明码

1. 凯撒明码(Caesar Cipher)

凯撒明码是一种十分古老的明码,其原理是通过字母的位移将原文和密文一一对应。
举个例子:明文是“Hello world”,偏移量为 3。
所以 A –>C,B–>D,顺次类推,
所以密文就是”Khoor zruog“

凯撒明码是一种十分古老的明码,其原理是通过字母的位移将原文和密文一一对应。
举个例子:明文是“Hello world”,偏移量为 3。
所以 A –>C,B–>D,顺次类推,
所以密文就是”Khoor zruog“

依据偏移量的不同,还存在一些特定的凯撒明码名称
偏移量为 10:Avocat
偏移量为 13:ROT13
偏移量为 -5:Cassis
偏移量为 -6:Cassette

在线解密网站:https://www.qqxiuzi.cn/bianma…

2. 培根明码(Bacon‘s Cipher)

培根明码加密时,明文中的每个字母都会转换成 5 个为一组由 a 和 b 组成的英文字母
如下:


能够看到这类明码又一个很显著的特点:只由 a 和 b 组成
然而加密解密的时候不分大小写 ……
所以看到这个明码就很容易想到时培根明码
例如:”Hello” –> “aabbbAABAAABABBABABBABBBA”

在线解密网站:https://tool.bugku.com/peigen/

3. 摩斯明码(Morese Cipher)

置信这个明码应该没人不晓得吧!电视剧里发电报个别用的都是这个明码。
摩斯明码是一种时通时断的信号代码,通过不同的排列程序来表白不同的英文字母、数字和标点符号。创造于 1837 年。
例如:“Hello”–> ” …. . .-.. .-.. — “

在线解密网站:moersima.00cha.net

4. 栅栏明码(Rail-fence Cipher)

栅栏明码,就是把要加密的明文分成 N 个一组,
而后把每组的第 1 个字连起来,造成一段无规律的话。(其中 N 称为栏数)
不过栅栏明码自身有一个潜规则,就是组成栅栏的字母个别不会太多。

栅栏明码也分为两种:Z 型和 W 型
好多文章都只讲 Z 型,但考试常常出 W 型的,所以我两种都讲一下

Z 型(惯例)


就是依照 N 个一组分好后,按列从上到下组合成新的字符串
例如:“Helloworld”
N= 2 时:“Hloolelwrd”;N= 3 时:“Hlodeorlwl”

W 型(变形)
这个很恶心,我钻研了半天才搞进去

W 型顾名思义,就是把明文依照 W 型排列,按行输入
其中栏数 N 即为行数,如图:(只能画进去了)


栅栏明码(W 型)在线解密网站:http://www.atoolbox.net/Tool….
栅栏明码(Z 型)在线解密网站:https://www.qqxiuzi.cn/bianma…

5. 仿射明码(Affine Cipher)

单表加密的一种,字母表的每个字母相应的值应用一个简略的数学函数对应一个数值,再把对应数值转换成字母。
个别仿射明码都会给你一个 a 一个 b,这是解密的要害

加密函数:E(x)=(ax+b)mod m;
解密函数:D(x)=a^(-1)*(x-b)mod m;

其中波及到的数学知识是乘法逆元

例子:假如 a =5,b=8;明文为 AFFINECIPHER
则加密为:

解密为:

而有些仿射明码的题目不会给 a 和 b,而是间接给对应的字符
(2021MSSCTF–Crypto T1)

仿射明码没有在线的解密工具,所以以 Python 脚本形式展现

def get(a, b):
    if b == 0:
        return 1, 0
    else:
        k = a //b
        remainder = a % b
        x1, y1 = get(b, remainder)
        x, y =y1, x1 - k * y1
    return x, y

s = input("请输出解密字符:").upper()
a = int(input("请输出 a:"))
b = int(input("请输出 b:"))

#求 a 对于 26 的乘法逆元
x, y = get(a, 26)
a1 = x % 26

l= len(s)
for i in range(l):
    cipher = a1 * (ord(s[i])- 65 - b) % 26
    res=chr(cipher + 65)
    print(res, end='')

6. 猪圈明码(Pigpen Cipher)

(2020 第四届强网杯青少年专项赛线上 –Crypto–easy_Crypto)

猪圈明码是一种以格子为根底的简略替代密码,一一对应的
这个玩意儿长这样:


[/i]
[i]遇到之后间接用在线解密平台解密即可 [/i]
[i]
猪圈明码在线解密平台:http://ctf.ssleye.com/pigpen….

7. 维吉尼亚明码(Vigenère Cipher)

是应用一系列凯撒明码组成明码字母表的加密算法

意思是什么呢?

维吉尼亚明码通常会有两个元素:明文和密钥
密钥的长度不肯定要和明文长度一样
加密时,密钥先循环称为密钥流,使其与明文长度雷同,而后以偏移量加密

ps:偏移量是指以后字母绝对于 A 的偏移量

举个例子:明文时 ATTACKDAWN;密钥为 LEMON
首先循环密钥造成密钥流:LEMONLEMONLE
而后依据偏移量进行一一字符的加密
如第 1 位明文是 A,密钥是 L,L 的偏移量为 12-1=11,则加密后应该为(A+11)mod 26,即为 L。

同理,第二位明文是 T,密文是 E,E 的偏移量为 5 -1=4,则加密后应该为(A+4)mod 26,即为 X。

顺次类推,能够失去密文 LXFOPVEFRNHR。

当然,还能够利用图表进行加密(我感觉眼都花了)


i]维吉尼亚明码在线解密网站:http://www.atoolbox.net/Tool….

结尾

以上就是 CTF 中经常出现的古典明码
其实有些特色都很显著,一看都能看进去是哪种明码(培根,猪圈等)

像凯撒明码这类个别都会给题目提醒或者要尝试
密码学只能多练 … 没别的办法,多见见就晓得是谁了
如果进线下赛了就要去网上找解密脚本了(因为线下赛不让联网哈哈)

正文完
 0