加密和解密
创建一个GUI应用程序,使用Python进行加密和解密
提示:需要调用tkinter库来生成图形界面,然后需要编写使用无限循环的代码,代码将不断询问用户是否要加密或解密消息。加密和解密在规则可以自己简单设定。
有帮助的话 采纳一下 谢谢呦
import tkinter as tk
window = tk.Tk()
window.title('加密解密')
def encrypt():
message = entry.get()
key = key_entry.get()
result = ''
for c in message:
if c.isupper():
result += chr((ord(c) + int(key) - 65) % 26 + 65)
else:
result += chr((ord(c) + int(key) - 97) % 26 + 97)
output.delete(0.0, tk.END)
output.insert(tk.END, result)
def decrypt():
message = entry.get()
key = key_entry.get()
result = ''
for c in message:
if c.isupper():
result += chr((ord(c) - int(key) - 65) % 26 + 65)
else:
result += chr((ord(c) - int(key) - 97) % 26 + 97)
output.delete(0.0, tk.END)
output.insert(tk.END, result)
frame = tk.Frame(window)
frame.pack()
tk.Label(frame, text='请输入消息:').pack(side=tk.LEFT)
entry = tk.Entry(frame, width=50)
entry.pack(side=tk.LEFT)
tk.Label(frame, text='请输入密钥:').pack(side=tk.LEFT)
key_entry = tk.Entry(frame, width=10)
key_entry.pack(side=tk.LEFT)
encrypt_button = tk.Button(frame, text='加密', command=encrypt)
encrypt_button.pack(side=tk.LEFT)
decrypt_button = tk.Button(frame, text='解密', command=decrypt)
decrypt_button.pack(side=tk.LEFT)
output = tk.Text(window, height=10, width=70)
output.pack()
window.mainloop()
不知道你这个问题是否已经解决, 如果还没有解决的话:from tkinter import *
from PIL import Image, ImageTk
from IPython.terminal.pt_inputhooks import tk
class ImageDemo:
#对一个pil_image对象进行缩放,让它在一个矩形框内,还能保持比例
def resize( self,w_box, h_box, pil_image): #参数是:要适应的窗口宽、高、Image.open后的图片
w, h = pil_image.size #获取图像的原始大小
f1 = 1.0*w_box/w
f2 = 1.0*h_box/h
factor = min([f1, f2])#选择最小的缩小比例,使得图形成比例变小
width = int(w*factor)
height = int(h*factor)
return pil_image.resize((width, height), Image.ANTIALIAS)
def displayImage(self):
self.filePath=self.filePathVar.get()
w_box = 110 # 期望图像显示的大小(窗口大小)
h_box = 250
# pil_image = Image.open(r'C:/Users/Lenovo/Desktop/1.jpg') #以一个PIL图像对象打开 【调整待转图片格式】
pil_image = Image.open( self.filePath) #以一个PIL图像对象打开 【调整待转图片格式】
pil_image_resized = self.resize( w_box, h_box, pil_image) #缩放图像让它保持比例,同时限制在一个矩形框范围内 【调用函数,返回整改后的图片】
self.imageItem = ImageTk.PhotoImage(pil_image_resized) # 把PIL图像对象转变为Tkinter的PhotoImage对象 【转换格式,方便在窗口展示】
self.canvas.create_image(w_box,h_box,image=self.imageItem, tags="Image")
def __init__(self):
window = Tk()
window.title("ImageDemo")
self.canvas = Canvas(window,width=180,height=400)
self.canvas.pack()
frame = Frame(window)
frame.pack()
self.filePathVar=StringVar()
Entry(frame,textvariable=self.filePathVar,justify=LEFT,width=40).grid(row=1,column=1)
btOn = Button(frame, text="显示图片", command=self.displayImage,).grid(row=2, column=1,sticky=W)
# Python3 tkinter基础 Canvas delete 删除画布中的所有图形
btDelete = Button(frame, text="关闭图片", command=(lambda x=ALL: self.canvas.delete(x))).grid(row=2, column=2,sticky=E)
window.mainloop() #创建事件循环直到关闭主窗口
ImageDemo()
# 测试案例:C:/Users/Lenovo/Desktop/1.jpg
我可以为您提供基本的思路和代码示例,但由于加密算法需要根据具体的需求和安全要求进行选择和实现,而本题并未指定具体的加密算法,因此无法提供完整的代码实现。
首先,使用tkinter库创建一个图形用户界面,可以参考段落2和段落3的示例代码,创建按钮、标签、输入框等必要组件,并进行布局。
其次,根据具体需求选择合适的加密算法,并使用Python实现加密和解密功能。可以参考Python cryptography模块中的加密算法,或是实现自己的加密算法。
最后,在GUI应用程序中添加一定的规则来进行加密和解密操作,可以使用无限循环来不断提示用户是否需要加密或解密消息,然后根据用户的选择调用相应的加密或解密函数。可以参考以下示例代码:
import tkinter as tk
from cryptography.fernet import Fernet # 选择加密算法
class App(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.title_label = tk.Label(self, text="加密解密工具")
self.title_label.pack()
self.input_label = tk.Label(self, text="输入消息:")
self.input_label.pack()
self.input_entry = tk.Entry(self)
self.input_entry.pack()
self.encrypt_button = tk.Button(self, text="加密", command=self.encrypt)
self.encrypt_button.pack()
self.decrypt_button = tk.Button(self, text="解密", command=self.decrypt)
self.decrypt_button.pack()
def encrypt(self):
input_text = self.input_entry.get()
key = Fernet.generate_key()
f = Fernet(key)
encrypted = f.encrypt(bytes(input_text, encoding='utf8'))
print("加密后的消息:", encrypted)
def decrypt(self):
input_text = self.input_entry.get()
# 使用与加密时相同的key进行解密
f = Fernet(key)
decrypted = f.decrypt(input_text)
print("解密后的消息:", decrypted)
root = tk.Tk()
root.geometry("400x200")
app = App(master=root)
app.mainloop()
在以上代码中,我们选择了cryptography库中的Fernet算法作为加密算法,使用按钮和输入框等组件构建了一个GUI应用程序,并在加密和解密函数中调用了Fernet的加密和解密函数实现了消息的加密和解密,最终在控制台输出了加密和解密后的消息。
希望以上示例代码可以为您提供一些帮助。如有不清楚的地方或有其他问题,欢迎随时提问。