加密 Vigenere 密码
Posted
技术标签:
【中文标题】加密 Vigenere 密码【英文标题】:Encrypting the Vigenere cipher 【发布时间】:2018-08-31 02:47:08 【问题描述】:我应该创建一个使用单词作为加密密钥的程序,最终的行为是这样的
$ python vigenere.py
Type a message:
The crow flies at midnight!
Encryption key:
boom
Uvs osck rmwse bh auebwsih!
这是Vigenere cipher的链接
我的主要问题是它的加密方面。
def vigenere_cipher(plaintext, key):
encrypted_string = ''
for i in range(len(key)):
# loop over plaintext by index
plaintextVal = ord(plaintext)
# if character in plaintext is alpha do the following:
keyVal = ord(key[i])
keyVal = keyVal - 97
# get alphabet position for character in key
plaintextChar += chr(keyVal + plaintextVal)
if plaintextVal >= ord('z')
#get alphabet position for character in plaintext
plaintextVal = plaintextVal - 26
# rotate character from plaintext with a character from the key
# convert new position back to a character if you haven't done it already
# concatenate new character to an encrypted string
print PlaintextVal
return encrypted_string
我遇到了一堆无效的语法错误,我对如何修复代码感到困惑。
提前致谢!
【问题讨论】:
【参考方案1】:修复它的最佳方法是随时处理每个错误。例如,在if plaintextVal >= ord('z')
中,您需要在语句末尾添加:
。然后,print Plaintext
要求变量plaintext
拼写正确。在修复所有语法错误后,您可能会遇到更多错误,因为您正在尝试ord(plaintext)
,但您不能使用字符串的ord
,而只能使用一个字符。
在我看来,循环遍历纯文本而不是 len(key)
:for plaintextCharacter in plaintext
并跟踪不同的计数器对于每个 @987654329 中的哪个字符要使用的不同计数器是有意义的@。
【讨论】:
以上是关于加密 Vigenere 密码的主要内容,如果未能解决你的问题,请参考以下文章