加密 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 密码的主要内容,如果未能解决你的问题,请参考以下文章

加密 Vigenere 密码

我的 vigenere 密码加密功能有啥问题?

使用从文件中读取明文的 Vigenere 密码进行加密 (JAVA)

使用 vigenere 密码加密时出现奇怪的错误

Python 中的 Vigenere 密码

浅析加密算法二Vigenere密码