python界面,选择文件,实现图像加密解密,加密解密完成后将文件另存选择地址
时间: 2023-12-09 17:03:18 浏览: 89
使用python对信息进行加密和解密
好的,这个问题我可以帮您解决。您需要使用Python的tkinter模块来创建GUI界面,然后使用Python的加密库和图像处理库来加密解密图像文件。
以下是一个示例代码,可以帮助您实现您的需求:
```python
import tkinter as tk
import tkinter.filedialog as fd
from cryptography.fernet import Fernet
from PIL import Image
# 选择图像文件并进行加密
def encrypt_image():
# 获取选择的文件路径
file_path = fd.askopenfilename()
if file_path:
# 读取图像文件
with Image.open(file_path) as img:
data = img.tobytes()
# 生成加密密钥
key = Fernet.generate_key()
# 使用密钥加密数据
f = Fernet(key)
encrypted_data = f.encrypt(data)
# 选择保存文件的路径
save_path = fd.asksaveasfilename(defaultextension='encrypted')
if save_path:
# 保存加密后的数据
with open(save_path, 'wb') as f:
f.write(encrypted_data)
# 保存密钥
with open(save_path + '.key', 'wb') as f:
f.write(key)
# 选择图像文件并进行解密
def decrypt_image():
# 获取选择的文件路径
file_path = fd.askopenfilename()
if file_path:
# 选择保存文件的路径
save_path = fd.asksaveasfilename()
if save_path:
# 读取加密后的数据
with open(file_path, 'rb') as f:
encrypted_data = f.read()
# 读取密钥
with open(file_path + '.key', 'rb') as f:
key = f.read()
# 使用密钥解密数据
f = Fernet(key)
decrypted_data = f.decrypt(encrypted_data)
# 将解密后的数据转换为图像格式并保存
with open(save_path, 'wb') as f:
img = Image.frombytes('RGB', (512, 512), decrypted_data)
img.save(f, format='PNG')
# 创建GUI界面
root = tk.Tk()
root.title("图像加密解密")
root.geometry("300x150")
# 添加加密按钮
encrypt_button = tk.Button(root, text="选择文件并加密", command=encrypt_image)
encrypt_button.pack(pady=10)
# 添加解密按钮
decrypt_button = tk.Button(root, text="选择文件并解密", command=decrypt_image)
decrypt_button.pack(pady=10)
# 运行界面
root.mainloop()
```
这个代码使用了tkinter模块创建了一个简单的GUI界面,当用户点击“选择文件并加密”按钮时,它将会弹出一个文件选择框,让用户选择要加密的图像文件。然后,它使用cryptography库中的Fernet算法生成密钥,将图像数据加密后,再将加密后的数据和密钥保存到用户选择的文件路径中。
当用户点击“选择文件并解密”按钮时,它将弹出一个文件选择框,让用户选择要解密的图像文件。然后,它会读取加密后的数据和密钥,使用密钥解密数据,并将解密后的数据转换为图像格式,并保存到用户选择的文件路径中。
请注意,这个示例只是一个简单的实现,实际使用时可能需要进行更多的错误处理和安全性检查。
阅读全文