我必须使用Caesar Cipher加密用户提供的纯文本。将每个明文字符转换为其ASCII(整数)值并存储在列表中。 我这样做了
print("This program uses a Caesar Cipher to encrypt a plaintext message using the encryption key you provide.")
plaintext = input("Enter the message to be encrypted:")
plaintext = plaintext.upper()
n = eval(input("Enter an integer for an encrytion key:"))
ascii_list = []
# encipher
ciphertext = ""
for x in range(len(plaintext)):
ascii_list[x] = plaintext (ascii_list) + n %26
print()
但错误如下所示:
TypeError: 'str' object is not callable
我希望结果出来:
This program uses a Caesar Cipher to encrypt a plaintext message using the encryption key you provide.
Enter the message to be encrypted: Boiler Up Baby!
Enter an integer for an encrytion key: 1868
The fully encoded message is: CWOTFZ&]QCHICa'
我尝试了很多不同的方法但结果却没有出来。
答案 0 :(得分:1)
您需要将初始字符解析为数字,将密钥添加到它们,然后将它们解析回字符。
在您的代码中ascii_list[x]
必须更改为ascii_list.append()
,因为您引用的是不存在的索引。此外,plaintext
不是您可以调用的函数,它只是您的大写初始消息。
你可以这样做:
for x in range(len(plaintext)):
ascii_list.append(chr(ord(plaintext[x]) + n))
print(ascii_list)
注意:强>
您提供的输入/输出(在:Boiler Up Baby!
,out:CWOTFZ&]QCHICa'
)不是典型的凯撒密码,因为一些字母变成符号,并且符号也被编码。使用此解决方案只会向上移动密钥,这意味着例如Z
永远不会变为A
。如果您需要适当的Caesar密码解决方案,您可能需要查看以下问题:Caesar Cipher Function in Python