#流密码窗口def create_new_window2 #此函数用于实际执行文件加密解密操作 def encrypt_decrypt_fileinput_file_path output_file_path key try with openinput_file_path rb as input_file with o
修改后的代码如下:
#流密码窗口 def create_new_window2(): #此函数用于实际执行文件加密操作 def encrypt_file(input_file_path, output_file_path, key): try: with open(input_file_path, 'rb') as input_file: with open(output_file_path, 'wb') as output_file: while True: byte = input_file.read(1) if not byte: break encrypted_byte = ord(byte) ^ int(key) output_file.write(bytes([encrypted_byte])) # 根据输出文件的扩展名选择保存方式 file_extension = os.path.splitext(output_file_path)[1] if file_extension == '.docx': #如果是.docx文件,则使用python-docx库保存 doc = docx.Document(output_file_path) doc.save(output_file_path) elif file_extension == '.xlsx': #如果是.xlsx文件,则使用openpyxl库保存 wb = openpyxl.load_workbook(output_file_path) wb.save(output_file_path) return True except Exception as e: messagebox.showerror("Error", str(e)) return False
#此函数用于实际执行文件解密操作
def decrypt_file(input_file_path, output_file_path, key):
try:
with open(input_file_path, 'rb') as input_file:
with open(output_file_path, 'wb') as output_file:
while True:
byte = input_file.read(1)
if not byte:
break
decrypted_byte = ord(byte) ^ int(key)
output_file.write(bytes([decrypted_byte]))
# 根据输出文件的扩展名选择保存方式
file_extension = os.path.splitext(output_file_path)[1]
if file_extension == '.docx':
#如果是.docx文件,则使用python-docx库保存
doc = docx.Document(output_file_path)
doc.save(output_file_path)
elif file_extension == '.xlsx':
#如果是.xlsx文件,则使用openpyxl库保存
wb = openpyxl.load_workbook(output_file_path)
wb.save(output_file_path)
return True
except Exception as e:
messagebox.showerror("Error", str(e))
return False
#此函数可以检查输入框是否填写完整,然后调用encrypt_file函数进行加密操作
def on_encrypt():
input_file_path = e_input.get()
output_file_path = e_output.get()
key = e_key.get()
#检查是否填写完整的输入、输出路径和密钥
if not input_file_path or not output_file_path or not key:
messagebox.showwarning("Warning", "请填写完整的输入、输出路径和密钥!")
return
#调用encrypt_file函数进行文件加密操作
if encrypt_file(input_file_path, output_file_path, key):
messagebox.showinfo("Success", "文件加密成功!")
#此函数可以检查输入框是否填写完整,然后调用decrypt_file函数进行解密操作
def on_decrypt():
input_file_path = e_input.get()
output_file_path = e_output.get()
key = e_key.get()
#检查是否填写完整的输入、输出路径和密钥
if not input_file_path or not output_file_path or not key:
messagebox.showwarning("Warning", "请填写完整的输入、输出路径和密钥!")
return
#调用decrypt_file函数进行文件解密操作
if decrypt_file(input_file_path, output_file_path, key):
messagebox.showinfo("Success", "文件解密成功!")
def on_select_input():
#弹出选择文件对话框并获取选择的文件路径
file_path = filedialog.askopenfilename()
if file_path:
#将选择的文件路径设置到输入路径文本框中
e_input.delete(0, tk.END)
e_input.insert(0, file_path)
def on_select_output():
#获取输入的文件路径
input_file_path = e_input.get()
if not input_file_path:
return
#根据输入路径的文件扩展名生成默认的输出文件路径,并弹出保存文件对话框获取输出文件路径
file_extension = os.path.splitext(input_file_path)[1]
file_path = filedialog.asksaveasfilename(defaultextension=file_extension)
if file_path:
#将选择的文件路径设置到输出路径文本框中
e_output.delete(0, tk.END)
e_output.insert(0, file_path)
new_window = tk.Toplevel(root_new)
new_window.title('流密码加密\解密窗口')
new_window.geometry('2000x1000')
# 输入文件路径
lbl_input = tk.Label(new_window, text="输入文件路径:")
lbl_input.pack()
e_input = tk.Entry(new_window, width=50)
e_input.pack()
btn_select_input = tk.Button(new_window, text="选择文件", command=on_select_input)
btn_select_input.pack()
# 输出文件路径
lbl_output = tk.Label(new_window, text="输出文件路径:")
lbl_output.pack()
e_output = tk.Entry(new_window, width=50)
e_output.pack()
btn_select_output = tk.Button(new_window, text="选择路径", command=on_select_output)
btn_select_output.pack()
# 密钥
lbl_key = tk.Label(new_window, text="密钥:")
lbl_key.pack()
e_key = tk.Entry(new_window)
e_key.pack()
# 加密按钮
btn_encrypt = tk.Button(new_window, text="加密", command=on_encrypt)
btn_encrypt.pack()
# 解密按钮
btn_decrypt = tk.Button(new_window, text="解密", command=on_decrypt)
btn_decrypt.pack(
原文地址: https://www.cveoy.top/t/topic/hh1v 著作权归作者所有。请勿转载和采集!