Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 解密加密字母表?_Python_List_Encryption_Decode_Scramble - Fatal编程技术网

Python 解密加密字母表?

Python 解密加密字母表?,python,list,encryption,decode,scramble,Python,List,Encryption,Decode,Scramble,这是我的任务: 写一个解密秘密消息的程序 它应该首先提示用户输入加扰的字母表。然后它应该询问秘密信息。最后,它输出解译后的版本 请注意,对于加扰的字母表,正好输入了26个字符。所有字母字符都将被翻译成它们的解码等价物(这将需要一段时间的循环),所有其他非字母字符的输出应该与没有翻译时完全相同 这是我目前的代码: decrypt = ["*"] * 26 scram_alphabet = input("Please input the scrambled alphabet in order: "

这是我的任务: 写一个解密秘密消息的程序

它应该首先提示用户输入加扰的字母表。然后它应该询问秘密信息。最后,它输出解译后的版本

请注意,对于加扰的字母表,正好输入了26个字符。所有字母字符都将被翻译成它们的解码等价物(这将需要一段时间的循环),所有其他非字母字符的输出应该与没有翻译时完全相同

这是我目前的代码:

decrypt = ["*"] * 26

scram_alphabet = input("Please input the scrambled alphabet in order: ")

while len(scram_alphabet) != 26:
    scram_alphabet = input("Please input the scrambled alphabet in order. The alphabet must have 26 characters: ")

num = 0

for each_letter in scram_alphabet:
    decrypt[num] = ord(each_letter)
    num = num + 1

print()
print()

msg = input("Now input your scrambled message: ")

print()
print()

num = 0

alphabet = [" "] * 26
for letter in range (26):
    alphabet[letter] = letter + 65

while num < 26:
    alphabet [num] = decrypt [num]
    print(chr(alphabet[num]))
    num = num + 1


for alpha in msg.upper():
    if alpha < "A" or alpha > "Z":
        print(alpha,end="")
    else:
        print(chr(decrypt[ ord(alpha) - 65 ]), end="")
decrypt=[“*”]*26
scram_alphabet=输入(“请按顺序输入加扰的字母:”)
而len(紧急停车字母表)!=26:
scram_alphabet=输入(“请按顺序输入加扰的字母表。字母表必须有26个字符:”)
num=0
对于紧急停堆字母表中的每个字母:
解密[num]=ord(每个字母)
num=num+1
打印()
打印()
msg=input(“现在输入您的加扰消息:”)
打印()
打印()
num=0
字母表=[“”]*26
对于范围(26)内的字母:
字母表[字母]=字母+65
当num<26时:
字母表[num]=解密[num]
打印(chr(字母表[num]))
num=num+1
对于msg.upper()中的alpha:
如果α<“A”或α>“Z”:
打印(alpha,end=“”)
其他:
打印(chr(解密[ord(alpha)-65]),end=“”)
我似乎不知道如何用while循环解字母表

当前,如果我输入“XQHAJDENKLTCBZGUYFWVMIPSOR”作为字母表和“VNKW KW BO 1WV WJHFJV bjwxej!”作为秘密消息,程序打印出加扰字母表和一条“未加扰”消息,内容为“IZTP TP QG 1PI PLNDLI QLPSJL!”。解读的信息实际上是“这是我的第一条秘密信息!”


有任何帮助吗?

据我所知,您的脚本运行正常。解读的信息似乎不是“这是我的第一条秘密信息!”

下面是我用你的字母表做的一些手工翻译:

Key: XQHAJDENKLTCBZGUYFWVMIPSOR
     ABCDEFGHIJKLMNOPQRSTUVWXYZ

Original:   VNKW KW BO 1WV WJHFJV BJWWXEJ!
Translated: IZTP ...

看起来您需要一个不同的示例来测试,或者我误解了加扰是如何执行的。

您映射到了错误的方向。例如,让我们看第一个字母。V应该变成T,但为什么

答案是因为V在字母表中占据的位置就是T通常占据的位置。取而代之的是,你在寻找字母表中V所占的位置,并在字母表中替换为I

简而言之,您当前的程序是一个加扰器而不是解扰器,因此您只是在第二次对消息加扰。例如,如果我使用相同的字母表,但提供原始消息,则得到的结果与您提供的加扰消息相同:

Please input the scrambled alphabet in order: 'XQHAJDENKLTCBZGUYFWVMIPSOR'
Now input your scrambled message: 'THIS IS MY 1ST SECRET MESSAGE!'
VNKW KW BO 1WV WJHFJV BJWWXEJ!
这就是问题所在:

decrypt[num] = ord(each_letter)
相反,您需要以相反的方向构建地图:

decrypt[ord(each_letter) - 65] = num + 65
现在,该计划开始运作:

Please input the scrambled alphabet in order: 'XQHAJDENKLTCBZGUYFWVMIPSOR'
Now input your scrambled message: 'VNKW KW BO 1WV WJHFJV BJWWXEJ!'
THIS IS MY 1ST SECRET MESSAGE!

我记得你说过你的课两天后就要结束了,两天前。你还有作业吗?是的。期末考试后第二天到期。