托马斯.杰斐逊

1: <ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: <KPBELNACZDTRXMJQOYHGVSFUWI <
3: <BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: <RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: <IHFRLABEUOTSGJVDKCPMNZQWXY <
6: <AMKGHIWPNYCJBFZDRUSLOQXVET <
7: <GWTHSPYBXIZULVKMRAFDCEONJQ <
8: <NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: <QWATDSRFHENYVUBMCOIKZGJXPL <
10: <WABMCXPLTDSRJQZGOIKFHENYVU <
11: <XPLTDAOIKFZGHENYSRUBMCQWVJ <
12: <TDSWAYXPLVUBOIKZGJRFHENMCQ <
13: <BMCSRFHLTDENQWAOXPYVUIKZGJ <
14: <XPHKZGJTDSENYVUBMLAOIRFCQW <

密钥: 2,5,1,3,6,4,9,7,8,14,10,13,11,12

密文:HCBTSXWCRQGLES

flag格式 flag{你解密的内容}

要解这道题一定要理解加密的原理。
1.密钥跟密文的长度是一致的
2.密钥的意思是让你看第几行
3.密文的意思是让你旋转行代码的开头字母为密文
首先,密钥第一个数字是2,那么我们就只需要看第二行KPBELNACZDTRXMJQOYHGVSFUWI
之后,密文的第一个字母是H,第二行代码也有H,所以我们要旋转到以H开头的代码HGVSFUWIKPBELNACZDTRXMJQOY

之后我们就需要写python脚本(太难了,不会写,只能从网上找,分析了一下):

```#coding:utf-8
```#秘钥
```key="2,5,1,3,6,4,9,7,8,14,10,13,11,12"
#密文
cipher_text = "HCBTSXWCRQGLES"

f = open("zhuanlun.txt")    ##打开文件
str_first_encry = []        ##新建一个空列表

for line in f:   ##遍历文件中内容
    line = line.strip()     ##删除开头或是结尾的字符,默认为空格或换行符
    str_first_encry.append(line)    ##在列表末尾添加line遍历f文件的代码,也就是给列表添加f文件的内容

key_index = key.split(",")      ##密钥以逗号分隔并且赋值
str_second_encry=[]         ##新建空列表
for k in key_index:         ##遍历密钥
    str_second_encry.append(str_first_encry[int(k)-1])
    ##str_first_encry[int(k)-1]计算str_first_encry对应的下标(列表元素从0开始)
    ##并且把str_first_encry下标值对应的代码存储给str_second_encry列表
    print(str_first_encry[int(k)-1])            ##输出str_first_encry列表对应下标的列表元素

for i,ch in enumerate(cipher_text):
    ##enumerate(cipher_text)遍历密文的字符串,并且给出索引序列,
    ##同时列出数据和数据下标,也就是说cipher_text的第一个元素是H
    ##使用i,ch遍历密文字符串
    line = str_second_encry[i]     ##把明文的文本下标对应的代码给line赋值
    split_index = line.index(ch)       ##index(ch)当遍历密文的字符串与line(str_second_encry)相等时,会停止并且返回一个数字
    temp=[]             ##新建空列表
    temp[0:len(line)-split_index+1] = line[split_index:len(line)]
    ##split_index+1返回的数字+1;len(line)-split_index+1:line的长度-密文与明文对应重复的字母的数字
    
    temp[len(temp):] = line[0:split_index]          ##进行交换代码
    str_second_encry[i] = "".join(temp)
```print("-------------------------------------")
```for plain in str_second_encry:
```    print(plain)
posted @ 2020-11-13 19:05  网抑云黑胶SVIP用户  阅读(231)  评论(0)    收藏  举报