1.简介

杰弗逊转轮加密

题目如下:

  1. 1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE <
  2. 2: < KPBELNACZDTRXMJQOYHGVSFUWI <
  3. 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK <
  4. 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO <
  5. 5: < IHFRLABEUOTSGJVDKCPMNZQWXY <
  6. 6: < AMKGHIWPNYCJBFZDRUSLOQXVET <
  7. 7: < GWTHSPYBXIZULVKMRAFDCEONJQ <
  8. 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ <
  9. 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ <
  10. 10: < UDNAJFBOWTGVRSCZQKELMXYIHP <
  11. 11 < MNBVCXZQWERTPOIUYALSKDJFHG <
  12. 12 < LVNCMXZPQOWEIURYTASBKJDFHG <
  13. 13 < JZQAWSXCDERFVBGTYHNUMKILOP <
  14. 密钥为:2,3,7,5,13,12,9,1,8,10,4,11,6
  15. 密文为: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

image.png

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)

运行结果如下:

image.png