Python 存在损坏的加密错误问题

Python 存在损坏的加密错误问题,python,encryption,io,pycrypto,Python,Encryption,Io,Pycrypto,我正在尝试加密test.txt文件的每一行。函数encrypt()基本上会输出混乱的文本。在我的计算机科学课上做一个年终专题。但我的问题是,当我试图“向后”运行代码时,解密失败,文件仍然损坏 from Crypto.Cipher import XOR import base64 import os def encrypt(key=None, plaintext=None): if key == None: key = "This_is_my_hidden_key"

我正在尝试加密test.txt文件的每一行。函数encrypt()基本上会输出混乱的文本。在我的计算机科学课上做一个年终专题。但我的问题是,当我试图“向后”运行代码时,解密失败,文件仍然损坏

from Crypto.Cipher import XOR
import base64
import os

def encrypt(key=None, plaintext=None):
    if key == None:
        key = "This_is_my_hidden_key"
    cipher = XOR.new(key)
    return base64.b64encode(cipher.encrypt(plaintext))
def decrypt(key=None, ciphertext=None):
    if key == None:
            key = "This_is_my_hidden_key"
    cipher = XOR.new(key)
    return cipher.decrypt(base64.b64decode(ciphertext))


#####Run below to encrypt all files in folder and each sub folder#######

def encrypt_all(UselessVariable = None):
    root = os.getcwd()
    path = os.path.join(root, "targetdirectory")
    x=0
    for path, subdirs, files in os.walk(root):
        for name in files:
            openfile = os.path.join(path, name)
            print openfile
            try:
                with open(openfile, 'r+') as a:
                    encrypted_text = []
                    for line in a:
                        encrypted_text.append(decrypt(None, line))
                    open(openfile,"w").close()
                    for text in range(len(encrypted_text)):
                        a.write((str(encrypted_text[text]))+ '\n')
            except IOError as e:
                print 'Operation failed: %s' % e.strerror
            x+=1
        print ""
    print x



#####Run below to decrypt all files in folder and each sub folder#######

def decrypt_all(UselessVariable = None):
    root = os.getcwd()
    path = os.path.join(root, "targetdirectory")
    x=0
    for path, subdirs, files in os.walk(root):
        for name in files:
            openfile = os.path.join(path, name)
            print openfile
            try:
                with open(openfile, 'r+') as a:
                    encrypted_text = []
                    for line in a:
                        encrypted_text.append(decrypt(None, line))
                    open(openfile,"w").close()
                    for text in range(len(encrypted_text)):
                        a.write((str(encrypted_text[text])))
            except IOError as e:
                print 'Operation failed: %s' % e.strerror
            x+=1
        print ""
    print x

您正在逐行使用XOR密码进行加密,但同时解密所有内容。对于解密,我使用##for a:encrypted_text.append(decrypt(None,line))###这不是逐行的,但加密的文本都在一行上。不,它不是用于加密的行在加密文本的末尾自动有一个“\n”。追加(解密(无,行))。我觉得那不合适。事实上,我很惊讶它不会导致加密失败,并出现无法解码文本的错误。