rsa_加密_采用tkinter做为可视化界面版.py

"""rsa_加密_采用tkinter做为可视化界面版.py"""

from tkinter import *
from tkinter import messagebox
from PIL import ImageTk,Image
import rsa                               # 通过 pip install rsa 安装rsa模块

def encrypt():
    """加密函数"""
    filename = "rsa加密码后文本.dat"
    message = txt_editor.get(1.0, END)
    #print("message = ",len(message))
    if message.strip() != "":
        crypto_text = rsa.encrypt(message.encode(), pubkey)  # 用公钥加密
        f = open(filename,mode = 'wb')
        f.write(crypto_text)
        f.close()
        messagebox.showinfo(project_title,"加密成功,加密后的文本存储在以下文件:\n" + filename  + "\n只有拥有私钥的人才能解密!")
    else:
        messagebox.showinfo(project_title,"没有输入文本。")
        

project_title = "风火轮少儿编程_rsa加密器_tkinter版"
screen_width ,screen_height = 600,600    # canvas长和高
screen_size = str(screen_width) + "x" + str(screen_height)

(pubkey, privkey) = rsa.newkeys(1024)    # 生成密钥,包括公钥和私钥,

f = open("public.pem",mode='w')
f.write(pubkey.save_pkcs1().decode())    # 保存公钥到文件中,谁都可以用它加密
f.close()

f = open('private.pem',mode= 'w')
f.write(privkey.save_pkcs1().decode())   # 保存私钥到文件中,有私钥的人才能打开加密的文本
f.close()

window = Tk()
window.resizable(width=False,height=False)
window.geometry(screen_size)             # 窗口大小 
window.title(project_title)              # 窗口标题

canvas = Canvas(window,width = 600,height= 600,bg='white')    
canvas.pack(expand = True)


im1 = Image.open("背景.png")             # 作为背景图的
background = ImageTk.PhotoImage(im1)    # 转换为tkinter能识别的图形对象:取名为 background
canvas.create_image(0,0,anchor=NW,image=background)     #贴背景图,以左上为0,0
 
canvas.create_text(screen_width//2,50,text = project_title,font = ("黑体",32,"normal"),anchor = "center")
canvas.create_text(50,150,text = "请在下列文本框输入待加密码文本:",font = ("宋体",12,"normal"),fill='blue',anchor = "nw")

txt_editor = Text(window,width = 50,height=20,bg='gray80')
txt_editor.place(x=50,y=180)


im1 = Image.open("加密按钮.png")             #作为背景图的
button_image_encrypt = ImageTk.PhotoImage(im1 )     # 转换为tkinter能识别的图形对象:取名为 background
button_encrypt = Button(window,width=100 ,command=encrypt,image = button_image_encrypt)     # 在window上新建 猜猜 按钮,命令为check,图形为button_image_guess
button_encrypt.place(x=50,y=510)                                                            # 放置

window.mainloop()


"""
公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),
公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。
通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。
比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

"""

下面是运行效果: