Python 语言实现DES 加解密 GUI界面
时间: 2024-10-09 19:08:54 浏览: 67
在Python中,你可以使用`pyDes`库来实现DES(Data Encryption Standard)加密解密,并结合`tkinter`或`PyQt`等GUI库创建用户界面。下面是一个简单示例,展示了如何使用`pyDes`和`tkinter`构建一个基本的DES加解密的GUI应用:
首先,确保已经安装了`pyDes`库,如果没有,可以用pip安装:
```bash
pip install pycryptodome
```
然后,编写核心加密解密部分:
```python
from tkinter import *
from tkinter import messagebox
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
def encrypt_decrypt(event):
# 获取输入框内容
plaintext = entry.get()
# 加密/解密选择
if radio_encrypt.get() == 'Encrypt':
mode = DES.MODE_ECB # ECB模式
cipher = DES.new(key, mode)
ciphertext = cipher.encrypt(pad(plaintext.encode(), DES.block_size))
else:
mode = DES.MODE_ECB # 或者其他模式,如CBC
cipher = DES.new(key, mode)
try:
ciphertext = unpad(cipher.decrypt(entry.get().encode()), DES.block_size).decode()
except ValueError:
messagebox.showerror("Error", "Invalid decryption input")
return
result_label.config(text="Encrypted/Decrypted Text: " + ciphertext)
root = Tk()
root.geometry("400x200")
entry = Entry(root)
entry.pack(pady=10)
radio_encrypt = Radiobutton(root, text="Encrypt", variable=root.curselection, value=1)
radio_encrypt.pack()
radio_decrypt = Radiobutton(root, text="Decrypt", variable=root.curselection, value=0)
radio_decrypt.pack()
button = Button(root, text="Process", command=lambda: encrypt_decrypt(None))
button.pack()
result_label = Label(root, text="")
result_label.pack()
root.mainloop()
```
在这个示例中,用户可以选择加密还是解密,输入文本后点击"Process"按钮会触发相应的加密或解密操作,结果显示在`result_label`上。
阅读全文