使用 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 只有一个字母而没有 运行 遍历所有字母。
我在官方 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 只有一个字母而没有 运行 遍历所有字母。