Шифрование текста с использованием проектов Python - RaspberryPi Org - PullRequest
0 голосов
/ 04 марта 2019

Я делаю этот «проект» на официальном сайте Raspberry Pi, где я учусь шифровать сообщения с использованием Python.

Я слежу за проектом 'Secret Agent Chat', и на шаг 8 я столкнулся с проблемой.Я дважды проверил все строки, которые я написал, и я почти уверен, что сделал это именно так, как сказал мне проект.Так что либо я все-таки сделал что-то не так после двойной проверки всего, что написал, либо проект не верный.Если это окажется ошибкой в ​​проекте, я сообщу об этом.Но я думаю, что вероятность выше, я сделал что-то не так, поэтому я надеюсь, что вы можете помочь мне найти это.

Проблема, с которой я сталкиваюсь, заключается в том, что при выполнении программы, которую я написал (я пытаюсь зашифровать сообщение),Я не получаю полное зашифрованное сообщение.Я буквально просто получаю первую букву сообщения, которое я пытался зашифровать.Пример:

>>> sheet = load_sheet('otp0.txt')
>>> encrypt ('Hualiwei.', sheet)
'H'
>>> 

Я должен получить что-то вроде этого:

>>> sheet = load_sheet('otp0.txt')
>>> encrypt ('Hualiwei.', sheet)
'Keudnsqn.'
>>> 

Ниже я помещаю код, который я написал для проекта.Это должно быть точно так же, как показано в проекте.

from random import randint
ALPHABET = 'abcdefghijklmnopqrstuvwxyz'
def generate_otp(sheets, length):
    for sheet in range(sheets):
        with open("otp" + str(sheet) + ".txt","w") as f:
            for i in range(length):
                f.write(str(randint(0,26))+"\n")
def load_sheet(filename):
    with open(filename, "r") as f:
        contents = f.read().splitlines()
    return contents
def get_plain_text():
    plain_text = input('Please type your message ')
    return plain_text.lower()
def load_file(filename):
    with open(filename, "r") as f:
        contents = f.read()
    return contents
def save_file(filename, data):
    with open(filename, 'w') as f:
        f.write(data)
def encrypt(plaintext, sheet):
    ciphertext = ''
    for position, character in enumerate(plaintext):
        if character not in ALPHABET:
            ciphertext += character
        else:
            encrypted = (ALPHABET.index(character) + int(sheet[position])) % 26
            ciphertext += ALPHABET[encrypted]
        return ciphertext

Мне действительно интересно, что я делаю неправильно.Я надеюсь, что вы можете помочь мне, и тем самым помочь многим другим людям, которые могут столкнуться с той же проблемой, которая откладывает их на эксперименты с этими проектами Raspberry Pi (если проблема не с моей стороны, по крайней мере).

Заранее большое спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Ваш оператор возврата в функции шифрования имеет слишком большой отступ?Я не запускал код, но после быстрого просмотра он выглядит так, как будто он может вернуть только одну букву, не пропуская их все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...