CRYPTO-位移编码

概论

位移编码有凯撒密码、rot加密等(其他的加密都不确定都哪些是位移编码类型的……)

凯撒密码也属于替换加密的一种,替换加密类型有:

Atbash Cipher埃特巴什码

Caesar Cipher凯撒密码

ROT5/13/18/47

Simple Substitution Cipher简单换位密码

Hill Cipher希尔密码

Pigpen Cipher猪圈密码

Polybius Square Cipher波利比奥斯方阵密码

夏多密码(曲折加密)

Playfair Cipher普莱费尔密码

Vigenere Cipher维吉尼亚密码

Autokey Cipher自动密钥密码

Beaufort Cipher波弗特密码

Running Key Cipher滚动密钥密码

Porta Cipher门户密码

Homophonic Substitution Cipher同音替换密码

Affine Cipher仿射密码

Baconian Cipher培根密码

ADFG/VX Cipher ADFG和ADFGVX密码

Bifid Cipher双密码

Trifid Cipher三分密码

Four-Square Cipher四方密码

Checkerboard Cipher棋盘密码

不过替换加密感觉不是位移编码,这些加密方式具体概念可以百度一下都有的,这里就不写出来了。

下面主要写下凯撒密码的题目复现吧,以后见到位移编码的题再补充——

题目复现

实验吧 - 变异凯撒

题目地址:http://www.shiyanbar.com/ctf/2038

题目内容:加密密文:afZ_r9VYfScOeO_UL^RWUc           格式:flag{ }

题目是变异凯撒,所以这题就是用了凯撒加密,观察密文发现里面还有下划线和数字,说明不是简单的英文字母表的位移了,那就很可能是ASCII码表的位移了,题目上说格式是flag{ },所以找下afz_和flag的关系,查下ASCII表

3

找到ASCII值:a(97)f(102)、f (102)l (108)、Z (90)a (97)、_ (95)g (103),可以发现规律:第一个字符偏移量为5,第二个字符偏移量为6,之后偏移量依次递增。

解密可以对照ASCII码表一个字符一个字符的解,也可以用脚本。可以用Python脚本比较简单

1
2
3
4
5
ciphertext = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5
for i in ciphertext:
print(chr(ord(i) + j), end='')
j += 1

4

得出flag为flag{Caesar_variation}

实验吧 - 我喜欢培根

题目地址:http://www.shiyanbar.com/ctf/1842

打开解题链接,可以看到这是一串摩斯密码

1
-- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -.. -.-. -.-. -.. -.-. -.-. -.-. -.. -.. -.. -.-. -.. -.-. -.-. -.-. -.. -.. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.. -.. -.-. -.. -.-. -.-. -.-. -.-. -.. -.-. -.-. -.-. -.-. -.-. / -.-. -.. -.-. -.-. -.-. -.. -.-. -.-. -.. -.-. / -.-. -.-. -.-. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.-. -.. -..

在线解密一下,解出

1
MORSE..--.-IS..--.-COOL..--.-BUT..--.-BACON..--.-IS..--.-COOLER..--.-DCCDCCCDDDCDCCCDDCCCCCCCCCDDCDCCCCDCCCCC/CDCCCDCCDC/CCCDCCDDDCCDDDCCDCDD

题目上说到培根而且可以看到解出来的BACON就是培根的意思,而培根所用的密码是一种本质上用二进制数设计的,
没有用通常的0和1来表示,而是采用a和b,所以替换一下

1
2
密文:DCCDCCCDDDCDCCCDDCCCCCCCCCDDCDCCCCDCCCCC/CDCCCDCCDC/CCCDCCDDDCCDDDCCDCDD
替换:baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaa/abaaabaaba/aaabaabbbaabbbaababb

培根密码表:

1

也可以在线解密,结果是:SHIYANBA IS COOL,所以flag为CTF{SHIYANBA IS COOL}

实验吧 - 困在栅栏里的凯撒

题目地址:http://www.shiyanbar.com/ctf/1867

题目内容是:小白发现了一段很6的字符:NlEyQd{seft}

根据题目得出是栅栏密码凯撒密码,先栅栏解密,两个一组分解

Nl、Ey、Qd、{s、ef、t}

然后合并得NEQ{etlydsf}

再用凯撒解密,在线解密:http://www.zjslove.com/3.decode/kaisa/index.html

2

可以看到第12次解密就是flag了,提交时ctf要大写:CTF{tianshu}

实验吧 - 密文rot13

题目地址:http://www.shiyanbar.com/ctf/728

这题非常简单,直接把题目给的字符串在线解密一下就出来了

主要是记录一下这个加密类型,第一次见到这种加密类型,不止rot13还有rot5、rot18、rot47这四个是一样的,rot加密也是典型的位移编码的一种

ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意

ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。下面分别说说它们的编码方式:
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环

ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环

ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码

bugkuCTF - 简单加密

题目地址:https://ctf.bugku.com/challenges#%E7%AE%80%E5%8D%95%E5%8A%A0%E5%AF%86

题目内容是一串字符

1
e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA

后面有一个AA,联想到base64后面有==,猜测应该是凯撒解密后再base64解密,首先查下ASCII表,A的ASCII码是65,=的ASCII码是61,往后偏移了四位,凯撒解密下得到base64字符串

1
a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

然后base64解密,flag为key{68743000650173230e4a58ee153c68e8}

bugkuCTF - 散乱的密文

题目地址:https://ctf.bugku.com/challenges#%E6%95%A3%E4%B9%B1%E7%9A%84%E5%AF%86%E6%96%87

题目内容是

lf5{ag024c483549d7fd@@1} 一张纸条上凌乱的写着2 1 6 5 3 4

2 1 6 5 3 4
l f 5 { a g
0 2 4 c 4 8
3 5 4 9 d 7
f d @ @ 1 }

按照123456顺序重新组合一下分为六组,f25d、l03f、a4d1、g87}、{c9@、544@

可以看出这是个栅栏密码,解密后是flag{52048c453d794df1}@@,flag就是flag{52048c453d794df1}

暂时先写这几题吧,之后做到这种题在更新。。。