Шифрование Vigenere шифра - PullRequest
       7

Шифрование Vigenere шифра

0 голосов
/ 31 августа 2018

Я должен создать программу, которая использует слово в качестве ключа шифрования, который в конечном итоге ведет себя так же

    $ python vigenere.py
Type a message:
The crow flies at midnight!
Encryption key:
boom
Uvs osck rmwse bh auebwsih!

Вот ссылка на Vigenere шифр

Моя главная проблема связана с аспектом шифрования.

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 Ответ

0 голосов
/ 31 августа 2018

Лучший способ исправить это - просто принимать каждую ошибку по ходу дела. Например, в if plaintextVal >= ord('z') вам нужен : в конце оператора. Затем print Plaintext требует, чтобы переменная plaintext была написана правильно. Вы, вероятно, получите больше ошибок после того, как все синтаксические ошибки будут исправлены, потому что вы пытаетесь ord(plaintext), но вы не можете взять ord строки, а только символ.

Мне кажется, что для вас имеет смысл циклически перебирать открытый текст вместо len(key): for plaintextCharacter in plaintext и отслеживать другой счетчик, с которым должен работать символ в ключе для каждого plaintextCharacter.

...