Python 存在损坏的加密错误问题
我正在尝试加密test.txt文件的每一行。函数encrypt()基本上会输出混乱的文本。在我的计算机科学课上做一个年终专题。但我的问题是,当我试图“向后”运行代码时,解密失败,文件仍然损坏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"
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”。追加(解密(无,行))。我觉得那不合适。事实上,我很惊讶它不会导致加密失败,并出现无法解码文本的错误。