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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录