使用字典解密 python 中的字符串



我想制作一个加密解密软件,但由于某种原因以下命令不起作用。我希望它解密一个名为e-text的参数,该参数实际上是一个字符串。

我的加密算法有完全相同的代码,只是使用不同的字典和不同的字母集

def decrypt(e_text):
letter = ["#""%""{""}""?""^""(""]"")""[""p""$""+", "=""/""@""*""!""_""-"".""9""8""~""&"">""|"]
dictionary = {
"#": "a",
"%": "b",
"{": "c",
"}": "d",
"?": "e",
"^": "f",
"(": "g",
"]": "h",
")": "i",
"[": "j",
"p": "k",
"$": "l",
"+": "m",
"/": "n",
"=": "o",
"@": "p",
"*": "q",
"!": "r",
"-": "s",
"_": "t",
".": "u",
"9": "v",
"8": "w",
"~": "x",
"&": "y",
">": "z",
"|": " ",
}
for letter in e_text:
print(dictionary[letter], end='')

首先,您没有显示要解密的e_text,所以我只是假设您指的是名为"字母"的列表。 值得一提的是,将两个不同的变量称为相同的变量("字母"(并不是一个好主意。

最后的 for 循环从列表中获取一个元素。列表中称为"字母"的元素是以下两个:

"#""%""{""}""?""^""(""]"")""[""p""$""+"
"=""/""@""*""!""_""-"".""9""8""~""&"">""|"

为了使用字典,您需要一个字符串,而不是包含 2 个字符串的列表:

letter = "".join(letter)

你得到

#%{}?^(])[p$+=/@*!_-.98~&>|

如果您有以下形式的解密函数的参数器:

text_to_decrypt = "#""%""{""}"

您不需要转换为一个字符串,只需调用该函数,例如:

text_to_decrypt = "#""%""{""}"
decrypt(text_to_decrypt)

比 print(( 函数更好的是使用 return:

e_text = "".join(e_text)
# use only if you have the format of "e_text" as of the "letter" list (list of more strings)
solution = []
for letter in e_text:
solution.append(dictionary[letter])
return solution

一样:

solution = ""
for letter in e_text:
solution += dictionary[letter]
return "".join(solution)

最新更新