用Python实现简单对称加密
我想通过使用用Python实现简单对称加密,python,python-3.x,encryption,cryptography,Python,Python 3.x,Encryption,Cryptography,我想通过使用echaracters中的字符更改每个字母来加密一些字母,该字符与characters中的字母具有相同的索引。 因此,我尝试使用zip()迭代这两个列表。 首先,我迭代了userInput,在同一个循环中,我迭代了key(这是zip(characters,echaracters)) 然后我检查I是否等于a,如果条件为True我将b添加到密码中 userInput = input("Enter: ") characters = ["A", &q
echaracters
中的字符更改每个字母来加密一些字母,该字符与characters
中的字母具有相同的索引。
因此,我尝试使用zip()
迭代这两个列表。
首先,我迭代了userInput
,在同一个循环中,我迭代了key
(这是zip(characters,echaracters)
)
然后我检查I
是否等于a
,如果条件为True
我将b
添加到密码中
userInput = input("Enter: ")
characters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
echaracters = ["@", "$", "(", "]", "=", ")", "&", "#", "!", "%", "~", "[", "/", ";", "*", "}", "9", "?", "5", "1", "_", ">", "<<", "+", ",", "-"]
key = zip(characters, echaracters)
cipher = ""
for i in userInput:
for a, b in key:
if i == a:
cipher += b
print(cipher)
我不明白为什么它只返回第一个符号
期望输出
Enter: ABC
@$(
我做错了什么?您的键在第一次循环通过后变为空
您可以尝试以下方法:
key=list(zip(characters, echaracters))
for i in userInput:
for a, b in key:
if i == a:
cipher += b
原因是因为'key'是一个zip类型,在第一次迭代后会丢失它的值,因为zip类型是一个迭代器。这是一个类似的问题。
你的代码有点复杂。有更简单的方法来完成你的任务
userInput=input(“输入:”)
字符=[“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”]
echaracters=[“@”、“$”、“(”、“]”、“=”、“&”、“#”、“!”、“%”、“~”、“[”、“/”、“;”、“*”、“}”、“9”、“?”、“5”、“1”、“#”、“>、”
你可以用
from string import ascii_uppercase
print(ascii_uppercase) # example zip(ascii_uppercase, echaracters)
# ABCDEFGHIJKLMNOPQRSTUVWXYZ
这个。或者你可以把key列成一个列表key=list(zip(characters,echaracters))
来防止这种行为。我同意,巧合的是,我已经在回答中添加了这个)谢谢你的回答谢谢你,伙计。这很有帮助
SYBMOLS = {
"A": "@",
"B": "$",
"C": "(",
"D": "]",
"E": "=",
"F": ")",
"G": "&",
"H": "#",
"I": "!",
"J": "%",
"K": "~",
"L": "[",
"M": "/",
"N": ";",
"O": "*",
"P": "}",
"Q": "9",
"R": "?",
"S": "5",
"T": "1",
"U": "_",
"V": ">",
"W": "<<",
"X": "+",
"Y": ",",
"Z": "-",
}
userInput = input("Enter: ")
for symbol in userInput:
print(SYBMOLS[symbol], end="")
characters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
from string import ascii_uppercase
print(ascii_uppercase) # example zip(ascii_uppercase, echaracters)
# ABCDEFGHIJKLMNOPQRSTUVWXYZ