小明某一天收到一封密信,信中写了几个不同的年份
辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
信的背面还写有“+甲子”,请解出这段密文。
key值:CTF{XXX}
百度可以查到有关传统知识
可以得到年份 list = [28,30,23,8,17,10,16,30]
+甲子,意为加60年,新的list = [88,90,83,68,77,70,76,90]
这些数字相隔不大,很容易联想到ascii码的对应的字符值:
栅栏密码python 代码:
list = [28,30,23,8,17,10,16,30] i=0 while i<len(list): list[i]+=60 i+=1 s="" i=0 while i<len(list): s+=chr(list[i]) i+=1 print s #s='abcdefgh' fac = [x for x in range(1,len(s))] i=1 print fac for j in range(len(fac)): str1='' for i in range(fac[j]): k=0 while i+k<len(s): str1+=s[i+k] k+=fac[j] print str1
进行一轮栅栏算法解密得到的结果:
XZSDMFLZ
XSMLZDFZ
XDLZMZSF
XMZFSLDZ
XFZLSZDM
XLZZSDMF
XZZSDMFL
发现没有什么特别规律,然后对每一个进行凯撒解密,python代码如下:
i=0 s=input("Input the string:") s.upper() for j in range(25): str1='' for i in range(len(s)): str1+=chr((ord(s[i])-64+j)%26+64) print str1
当试到第4个字符串时:
XM@FSLD@
YNAGTMEA
@OBHUNFB
APCIVOGC
BQDJWPHD
CREKXQIE
DSFLYRJF
ETGM@SKG
FUHNATLH
GVIOBUMI
HWJPCVNJ
IXKQDWOK
JYLREXPL
K@MSFYQM
LANTG@RN
MBOUHASO
NCPVIBTP
ODQWJCUQ
PERXKDVR
QFSYLEWS
RGT@MFXT
SHUANGYU
TIVBOH@V
UJWCPIAW
VKXDQJBX
flag就是SHUANGYU