使用 Python 加密文本 - RaspberryPi Org 项目

Encrypting text using Python - RaspberryPi Org projects

我在官方 raspberry pi 网站上这样做 'project',我在那里学习使用 Python 加密消息。

我正在关注 'Secret Agent Chat' 项目,在 step 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 项目(如果问题不在我身上,在至少)。

提前致谢!

你的return加密函数语句是不是缩进太多了?我没有 运行 代码,但快速浏览后看起来确实 return 只有一个字母而没有 运行 遍历所有字母。