1.简介
题目如下:
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
2: < KPBELNACZDTRXMJQOYHGVSFUWI <
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
11: < MNBVCXZQWERTPOIUYALSKDJFHG <
12: < LVNCMXZPQOWEIURYTASBKJDFHG <
13: < JZQAWSXCDERFVBGTYHNUMKILOP <
密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
密文为:NFQKSEVOQOFNP
手工解密:
密钥得数字就代表第几个轮子,解密方法是找到密钥对应的轮子,然后再在这一行中找到密钥所对应的密文,排到首列,拼接起来(实质是13个轮子在旋转,为方便理解说成拼接)
1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2 NACZDTRXMJQOYHGVSFUWI + KPBEL
2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3 FHTEQGYXPLOCK + BDMAIZVRNSJUW
3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 7 Q + GWTHSPYBXIZULVKMRAFDCEONJ
4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5 KCPMNZQWXY + IHFRLABEUOTSGJVD
5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 13 SXCDERFVBGTYHNUMKILOP + JZQAW
6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 12 EIURYTASBKJDFHG + LVNCMXZPQOW
7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 9 VUBMCQWAOIKZGJ + XPLTDSRFHENY
8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 1 OSFE + ZWAXJGDLUBVIQHKYPNTCRM
9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 8 Q + NOZUTWDCVRJLXKISEFAPMYGHB
10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 10 OWTGVRSCZQKELMXYIHP + UDNAJFB
11: < MNBVCXZQWERTPOIUYALSKDJFHG < 4 FCUKTEBSXQYIZMJWAO + RPLNDVHG
12: < LVNCMXZPQOWEIURYTASBKJDFHG < 11 NBVCXZQWERTPOIUYALSKDJFHG + M
13: < JZQAWSXCDERFVBGTYHNUMKILOP < 6 PNYCJBFZDRUSLOQXVET + AMKGHIW
NACZDTRXMJQOYHGVS F UWIKPBEL
FHTEQGYXPLOCKBDMA I ZVRNSJUW
QGWTHSPYBXIZULVKM R AFDCEONJ
KCPMNZQWXYIHFRLAB E UOTSGJVD
SXCDERFVBGTYHNUMK I LOPJZQAW
EIURYTASBKJDFHGLV N CMXZPQOW
VUBMCQWAOIKZGJXPL T DSRFHENY
OSFEZWAXJGDLUBVIQ H KYPNTCRM
QNOZUTWDCVRJLXKIS E FAPMYGHB
OWTGVRSCZQKELMXYI H PUDNAJFB
FCUKTEBSXQYIZMJWA O RPLNDVHG
NBVCXZQWERTPOIUYA L SKDJFHGM
PNYCJBFZDRUSLOQXV E TAMKGHIW
2.解密脚本
因为手工容易排错而且费时,脚本如下:
import re
table=[2,3,7,5,13,12,9,1,8,10,4,11,6]
Ciphertext='NFQKSEVOQOFNP'
with open(r'ttt.txt','r') as f:
data=f.read()
#print(data)
#转轮机根据table重新排列
def wheel_decode(data,table):
resultList=[]
pattern = re.compile('[A-Z]{26}')
result = pattern.findall(data)
for i in table:
resultList.append(result[i-1])
return resultList
resultList = wheel_decode(data,table)
#根据密文重新排列
def rearrange(List,Ciphertext):
resultList=[]
for i in range(0,13):
resultList.append(List[i][List[i].find(Ciphertext[i]):]+List[i][:List[i].find(Ciphertext[i])])
return resultList
resultList= rearrange(resultList,Ciphertext)
#选取每一列,列出结果
def rearrange2(List):
resultList=[]
s=''
for i in range(0,26):
for j in List:
s += j[i]
resultList.append(s)
s=''
return resultList
resultList = rearrange2(resultList)
for i in resultList:
print(i)