初级凯撒密码解密过程的加密



我目前正在学习如何在Python中使用Caesar密码方法进行加密/解密。我已经研究过如何加密"14:00/船只就位"以接收"7,21,18,_6,21,23,6,_14,5,18,_22,1,_3,2,6,22,7,22,2,1",但我很难写解密码。具体来说,我不确定如何使用if/else语句来正确地反转原始加密,以及如何将数字转换回字母。每个字母将根据小时(班次(而变化。

解密代码

import string
def decrypt(s):
s = "14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1"
shift = int(s[0:2])
time, plaintext = s.split("/")
print(shift)
print(time)
print(plaintext)
letters = string.ascii_lowercase
result = [] 
for char in plaintext:
print(char)
if char == '_':
result = result + ' '
else:
decode = (int(char) - shift) %26
result = result + str(decode) +','
print(result)
def main():
decode = decrypt("14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1")
main()

您的代码需要的主要内容是生成字符的ordchr函数,以及由于shift为负而导致的移位(使用模数是正确的(。下面是缩短的版本。您可以根据自己的代码调整ord和chr的使用;"环绕";移位数学:

def decrypt(s):
shift = int(s[0:2])
time, txt = s.split("/")
txt = txt.replace('_',',-1,').split(",")
print(txt)
txt = (' ' if c=='-1' else chr(ord('a')+(int(c)-shift+26)%26) for c in txt)
return "".join(txt)

print(decrypt("14:00/7,21,18_6,21,22,3,6_14,5,18_22,1_3,2,6,22,7,22,2,1"))

您也可以使用像['a','b','c','d'...]这样的字符列表,并使用列表中的位置来获取所需的字符。

最新更新