我怎样才能在Python中将凯撒密码转换回正常状态?

时间:2018-06-08 12:07:01

标签: python string function caesar-cipher string-conversion

我想知道如何将凯撒密码转换为普通文本。我已经完成了将普通文本翻译成Cipher代码的方法,这就是我的方法:

def conversion(chr,ord):
    for letter in stringinput:
            cipheresult = chr(ord(letter) + int(shiftnumber))
            print(cipheresult)

所以我想知道如何完成与此完全相反的工作并将其转换回本应输入的内容。顺便提一下,shiftnumber变量取决于用户输入程序的内容。

由于

1 个答案:

答案 0 :(得分:0)

首先,您的函数不应将chrord作为参数。而是输入您的字符串以及您想要移动的金额。实现ciper的常用方法是使用str.translate

from string import ascii_lowercase, ascii_uppercase, ascii_letters

def cipher(text, shift):
    translation = str.maketrans(
        ascii_letters,
        ascii_lowercase[shift:] + ascii_lowercase[:shift] +\
        ascii_uppercase[shift:] + ascii_uppercase[:shift]
    )

    return text.translate(translation)

secret_msg = cipher('Python is cool!', 1) # 'Qzuipo jt dppm!'

最后,由于加密将字符移动k,因此反向操作只需加密-k

msg = cipher('Qzuipo jt dppm!', -1) # Python is cool!