用Python解密Caeser密码
我试图为Caeser密码脚本制作一个解密脚本进行加密,但无法使其工作。这是我的加密脚本:用Python解密Caeser密码,python,caesar-cipher,Python,Caesar Cipher,我试图为Caeser密码脚本制作一个解密脚本进行加密,但无法使其工作。这是我的加密脚本: def encrypt(text,s): result = "" # traverse text for i in range(len(text)): char = text[i] # Encrypt uppercase characters if (char.isupper()):
def encrypt(text,s):
result = ""
# traverse text
for i in range(len(text)):
char = text[i]
# Encrypt uppercase characters
if (char.isupper()):
result += chr((ord(char) + s-65) % 26 + 65)
# Encrypt lowercase characters
else:
result += chr((ord(char) + s - 97) % 26 + 97)
return result
#def decrypt(ciphertext, s):
text = "0123456789"
s = 4
Cipher=encrypt(text,s)
print("Text : " + text)
print ("Shift : " + str(s))
print ("Cipher: " + encrypt(text,s))
我需要帮助以同样的方式创建解密脚本。
提前谢谢 这是我的一些代码,用于解密一个ceaser密码的函数。当移位未知时,使用的方法是简单地获取所有可能的值,然后选择一个在英语词典中有一半以上解码单词的值。对于非字母字符,使用占位符字符 需要一些额外的部分,例如字典或额外的函数/列表,因此我将在下面的链接中包含它们 注意,它只适用于小写字母,但我希望它能帮助您更好地理解逻辑
def解码(消息,shift=-1):
"""
解码来自凯撒密码的消息
参数:
-消息(str):要解码的消息
可选参数:
-移位(int):如果移位已知
返回:
-decodedMessage(str):已解码的消息
"""
decodedMessage=“”
message=message.lower()#使用小写更容易
#如果位移已知,则很容易解码
如果轮班!=-1:
对于范围内的字母索引(len(message)):
如果消息[letterIndex]位于['',!'',''?'','',''-'','',''中,则:
decodedMessage+=消息[字母索引]
其他:
尝试:
索引=字母表索引(消息[字母索引])-移位
#如果索引小于字母表,请处理它
当指数<0时:
索引+=len(字母表)
decodedMessage+=字母表[索引]
例外情况除外,如e:
打印(“出现问题:”,e)
decodedMessage+='?'
返回解码消息
否则:#如果不知道班次,用蛮力解决
data=read\u json('words\u dictionary')
对于范围内的i(len(字母表)):
decodedMessage=解码(消息,i+1)
wordList=decodedMessage.split(“”)
尝试:
#循环计算英语单词
计数=0
对于单词列表中的单词:
如果data.keys()中有单词:
计数+=1
#与只检查一个单词相比,这种方法更准确
如果计数>len(单词列表)/2:
返回解码消息
除KeyError外:
持续
完整代码
单词词典让我在剩下的脚本中尝试一下,但非常感谢!