我的程序的解密部分不起作用

时间:2015-11-14 11:09:07

标签: python python-3.x encryption

我目前正在编写一个加密和解密文本和.txt文件的程序,除了解密.txt文件的部分外,整个程序工作正常。这是该程序该部分的代码。

while True:
    message = int(input('Open file (1) or type message (2)? '))
    if message == 1:
        file = input('What file should be opened? ')
        file = file + '.txt'
        with open(file) as file:
            file = [line.rstrip('\n') for line in file]
        break
    elif message == 2:
        file = input('What was the encrypted message? ')
        break
    else:
        print('Please enter 1 or 2\n')

displacement = int(input('What was the displacement? '))

for i in range(len(file)):
    num = ord(file[i])
    num -= displacement
    letter = chr(num)
    new_message.append(letter)
new_message = ''.join(new_message)
print('\n' + new_message)

我得到的错误是:'TypeError:ord()需要一个字符,但找到长度为5的字符串'。同一段代码用于加密文本,为什么这会有所不同,哪些是错的?

1 个答案:

答案 0 :(得分:0)

代码有很多问题。 首先,这是Ceaser Cipher吗?如果是这样,您应该指定文本是否在UI中加密/解密,因为您必须这样做:

if encrypted==False: num -= displacement
else: num+=displacement 

其次,我发现对于密码来说,更容易做一个不同的for循环来处理文本,如:

for char in text:
    do_stuff
    print char 
    ## etc

最后,主要问题是你如何阅读文本文件。你正在制作一份清单。你应该尝试:

file = file.read()