维吉尼亚密码和同态加密 - 安全加密工具
class Application: def init(self): self.master = tk.Tk() self.master.title('维吉尼亚密码') self.master.geometry('500x500')
# 创建背景Frame对象作为主要容器
self.bg_canvas = tk.Canvas(self.master, width=500, height=600)
self.bg_canvas.pack(fill=tk.BOTH, expand=True)
# 创建背景图片,添加到Canvas中
self.bg_image = tk.PhotoImage(file='666.gif')
self.bg_canvas.create_image(0, 0, image=self.bg_image, anchor='nw')
# 创建菜单栏
self.menu_bar = tk.Menu(self.master)
# 创建加密菜单
self.encrypt_menu = tk.Menu(self.menu_bar, tearoff=0)
self.encrypt_menu.add_command(label='凯撒密码', command=self.caesar_cipher)
self.encrypt_menu.add_command(label='多字符代替密码', command=self.polybius_square)
# 添加同态加密子菜单
self.homomorphic_menu = tk.Menu(self.encrypt_menu, tearoff=0)
self.homomorphic_menu.add_command(label='同态加密', command=self.open_homomorphic_window)
self.encrypt_menu.add_cascade(label='其他加密算法', menu=self.homomorphic_menu)
# 添加菜单栏
self.menu_bar.add_cascade(label='菜单', menu=self.encrypt_menu)
self.master.config(menu=self.menu_bar)
# 添加明文输入框
self.plaintext_label = tk.Label(self.bg_canvas, text='明文:')
self.plaintext_label.grid(row=0, column=0, sticky=tk.W)
self.plaintext_entry = tk.Entry(self.bg_canvas)
self.plaintext_entry.grid(row=0, column=0, columnspan=2, padx=0, pady=5)
# 添加关键词输入框
self.key_label = tk.Label(self.bg_canvas, text='关键词:')
self.key_label.grid(row=1, column=0, sticky=tk.W)
self.key_entry = tk.Entry(self.bg_canvas)
self.key_entry.grid(row=1, column=0, columnspan=2, padx=0, pady=5)
# 添加加密按钮
self.encrypt_button = tk.Button(
self.bg_canvas,
text='加密',
command=self.encrypt
)
self.encrypt_button.grid(row=2, column=0, padx=0, pady=5)
# 添加解密按钮
self.decrypt_button = tk.Button(
self.bg_canvas,
text='解密',
command=self.decrypt
)
self.decrypt_button.grid(row=2, column=1, padx=1, pady=5)
# 添加输出文本框
self.output_label = tk.Label(self.bg_canvas, text='输出:')
self.output_label.grid(row=3, column=0, sticky=tk.W)
self.output_text = tk.Text(self.bg_canvas)
self.output_text.grid(row=4, column=0, columnspan=3, padx=5, pady=5)
# 跳转到同态加密界面
def open_homomorphic_window(self):
self.master.destroy() # 关闭当前窗口
# 创建同态加密界面
self.homomorphic_window = tk.Tk()
self.homomorphic_window.title('同态加密示例')
# ... 添加输入和输出框、加密和解密按钮等部件 ...
self.homomorphic_window.mainloop() # 运行主循环
同态加密函数
def homomorphic_encryption(text, key=5): encrypted_text = "" for char in text: encrypted_text += chr(ord(char) ^ key) # 异或运算实现同态加密 return encrypted_text
解密函数
def decrypt(text, key=5): decrypted_text = "" for char in text: decrypted_text += chr(ord(char) ^ key) # 异或运算实现同态解密 return decrypted_text
加密按钮回调函数
def on_encrypt_click(): input_text = input_entry.get() encrypted_text = homomorphic_encryption(input_text) output_entry.delete(0, tk.END) output_entry.insert(0, encrypted_text)
解密按钮回调函数
def on_decrypt_click(): input_text = input_entry.get() decrypted_text = decrypt(input_text) output_entry.delete(0, tk.END) output_entry.insert(0, decrypted_text)
创建窗口
window = tk.Tk() window.title('同态加密示例')
创建输入标签和输入框
input_label = tk.Label(window, text='输入:') input_label.grid(row=0, column=0, padx=5, pady=5, sticky='w') input_entry = tk.Entry(window, width=40) input_entry.grid(row=0, column=1, padx=5, pady=5)
创建输出标签和输出框
output_label = tk.Label(window, text='输出:') output_label.grid(row=1, column=0, padx=5, pady=5, sticky='w') output_entry = tk.Entry(window, width=40) output_entry.grid(row=1, column=1, padx=5, pady=5)
创建加密和解密按钮
encrypt_button = tk.Button(window, text='加密', command=on_encrypt_click) encrypt_button.grid(row=2, column=0, padx=5, pady=5) decrypt_button = tk.Button(window, text='解密', command=on_decrypt_click) decrypt_button.grid(row=2, column=1, padx=5, pady=5)
运行主循环
window.mainloop()
原文地址: https://www.cveoy.top/t/topic/oArK 著作权归作者所有。请勿转载和采集!