Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python解密Caeser密码_Python_Caesar Cipher - Fatal编程技术网

用Python解密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()):

我试图为Caeser密码脚本制作一个解密脚本进行加密,但无法使其工作。这是我的加密脚本:

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外:
持续
完整代码


单词词典

让我在剩下的脚本中尝试一下,但非常感谢!