用一次性键盘破解Python问题

用一次性键盘破解Python问题,python,Python,我是编程新手,正在尝试创建一个程序,在这个程序中,我会得到一个一次性的pad,并希望使用我的程序破译一个基本的消息文件。我在匹配ASCII和pad时遇到问题(我无法找出字符移位的“代码”或公式)。我们将非常感谢您的任何帮助。我将pad设置为9,因为idk知道如何移动字母。这是我收到的便笺簿: (JKKIAARZLXNPWAXQCCBTMUADQHVOLPRNYXVUHOVJWLJOSUCREJZHHWDFQNVGPPKJPGrxMRzTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcT

我是编程新手,正在尝试创建一个程序,在这个程序中,我会得到一个一次性的pad,并希望使用我的程序破译一个基本的消息文件。我在匹配ASCII和pad时遇到问题(我无法找出字符移位的“代码”或公式)。我们将非常感谢您的任何帮助。我将pad设置为9,因为idk知道如何移动字母。这是我收到的便笺簿:

(JKKIAARZLXNPWAXQCCBTMUADQHVOLPRNYXVUHOVJWLJOSUCREJZHHWDFQNVGPPKJPGrxMRzTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTdTcTcTcTcTcTcTcTcTcTcTcTcTcTdUcTcTdUcTcTcTcTcTcTdUcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcTcSluhthxOfDeqyxWxVxVxWxWxWzNpZIGSQGPWxWzWzWzEyslGobuaveZrDkWyzZcAzGyzGyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyKyXIJJHFMMPSYZIVNAEMGZCWMGSEHMDEXRMFCGJPOYTPSHHLVFPOCndYCKYTKYTKOPZZZIVPQUPWPMUBAEJIFJVTfEJJVTfHmSvTfDfDfDfDfDfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfPfP

我将其保存为文本文件,然后读入

msg = "This is an amazing secret message!"

pad = open("pad.txt", "r")

shift = 9

def shift_letter(c,shift):
    pad_count = 0
    code = ord(c)
    if (code>=65) and (code<=90):
        code = ((code-shift-39)%26)+65
        pad_count = pad_count + 1
    elif (code>=97) and (code<=122):
        code = (code-shift-71)%26+97
    return chr(code)

def shift_message(msg, shift):
    seq = list(msg)
    for i in range(0,len(msg)):
        seq[i] = shift_letter(seq[i],shift)
    return "".join(seq)

def encrypt(msg):
    return shift_message(msg,shift)

def decrypt(msg):
    return shift_message(msg,shift)

def main ():
    encrypted_message = encrypt(msg)
    print(encrypted_message)

    final_message = decrypt(encrypted_message)
    print(final_message)

if __name__ == "__main__":
    main()
msg=“这是一条惊人的秘密消息!”
pad=open(“pad.txt”、“r”)
班次=9
def班次字母(c,班次):
焊盘计数=0
代码=作战需求文件(c)

如果(代码>=65)和(代码=97)和(代码您必须从pad文件中读取移位:

with open("pad.txt") as f:
    pad = f.read()

def letter_ord(letter):
    return ord(letter.upper())-ord("A")

def shift_letter(old, shift):
    old = old.upper()
    new_ord = ord(old)+shift
    if new_ord > ord("Z"):
        new_ord -= 26
    elif new_ord < ord("A"):
        new_ord += 26
    return chr(new_ord)

def crypt(text, mode=1):  # mode is 1 for encrypt and -1 for decrypt
    res = ""
    for t_text, t_pad in zip(text, pad):
        res += shift_letter(t_text, letter_ord(t_pad)*mode)
    return res

def encrypt(text):
    return crypt(text, 1)

def decrypt(text):
    return crypt(text, -1)
打开(“pad.txt”)作为f:
pad=f.read()
def信函ord(信函):
返回ord(字母.upper())-ord(“A”)
def班次字母(旧,班次):
old=old.upper()
新订单=订单(旧)+班次
如果新命令>命令(“Z”):
新单词-=26
elif new_ord
改进了格式设置“因为idk知道什么或如何移动字母”-你这是什么意思?他们想要的是一次性键盘,而不是Caesar。@bereal我现在把它改为一次性键盘。