用python代码 设计并实现一个具有图形用户界面的文本文件加密工具。 实验基本要求如下。 (1)使用块加密算法对文件进行加密,如:DES算法。 (2)界面应具有主菜单。 (3)界面应具有工具栏。 (4)对运行时错误进行异常处理。 (5)还可以实现更多升级功能。
时间: 2023-06-14 09:06:04 浏览: 84
基于python实现文件加密功能
下面是一个使用Python Tkinter库实现的文本文件加密工具的示例代码:
```python
import tkinter as tk
import tkinter.filedialog
from Crypto.Cipher import DES
class TextEncryptor:
def __init__(self):
self.window = tk.Tk()
self.window.title("文本文件加密工具")
self.window.geometry('300x150')
self.create_widgets()
def create_widgets(self):
self.label_key = tk.Label(self.window, text="加密密钥:")
self.label_key.grid(column=0, row=0)
self.entry_key = tk.Entry(self.window, show="*")
self.entry_key.grid(column=1, row=0)
self.button_file = tk.Button(self.window, text="选择文件", command=self.choose_file)
self.button_file.grid(column=0, row=1)
self.button_encrypt = tk.Button(self.window, text="加密", command=self.encrypt_file)
self.button_encrypt.grid(column=1, row=1)
self.status_bar = tk.Label(self.window, text="就绪")
self.status_bar.grid(column=0, row=2, columnspan=2)
def choose_file(self):
self.file_path = tk.filedialog.askopenfilename()
self.status_bar.config(text="已选择文件:" + self.file_path)
def encrypt_file(self):
try:
key = self.entry_key.get().encode('utf-8')
cipher = DES.new(key, DES.MODE_ECB)
with open(self.file_path, 'rb') as file_in:
with open(self.file_path + ".enc", 'wb') as file_out:
while True:
block = file_in.read(8)
if not block:
break
elif len(block) < 8:
block = block + b'\0' * (8 - len(block))
file_out.write(cipher.encrypt(block))
self.status_bar.config(text="加密完成")
except Exception as e:
self.status_bar.config(text="错误:" + str(e))
def run(self):
self.window.mainloop()
if __name__ == "__main__":
app = TextEncryptor()
app.run()
```
这个加密工具使用DES算法对文本文件进行加密。它包含一个主窗口,用户可以选择要加密的文件和输入加密密钥,然后单击“加密”按钮来启动加密过程。加密后的文件将保存在原始文件的相同目录中,并带有“.enc”扩展名。
您可以通过添加更多的按钮和菜单项来扩展该工具,并添加其他功能,例如解密文件、密码学算法选项等等。同时,您可以根据需要进行更改以适应您的特定需求。
阅读全文