我怎样才能在 Python 中将凯撒密码恢复正常?
How could I translate Caesar cipher code back to normal in Python?
我想知道如何将凯撒密码翻译成普通文本。我已经完成了将普通文本翻译成密码的工作,我是这样做的:
def conversion(chr,ord):
for letter in stringinput:
cipheresult = chr(ord(letter) + int(shiftnumber))
print(cipheresult)
所以我想知道如何做与此完全相反的事情并将其转换回本来应该是字符串输入的内容。顺便说一下,shiftnumber 变量由用户输入程序的内容决定。
谢谢
首先,您的函数不应将 chr
和 ord
作为参数。相反,输入您的字符串和您想要移动的数量。实现 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!
我想知道如何将凯撒密码翻译成普通文本。我已经完成了将普通文本翻译成密码的工作,我是这样做的:
def conversion(chr,ord):
for letter in stringinput:
cipheresult = chr(ord(letter) + int(shiftnumber))
print(cipheresult)
所以我想知道如何做与此完全相反的事情并将其转换回本来应该是字符串输入的内容。顺便说一下,shiftnumber 变量由用户输入程序的内容决定。
谢谢
首先,您的函数不应将 chr
和 ord
作为参数。相反,输入您的字符串和您想要移动的数量。实现 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!