rsa加密码器和rsa解密器图形化程序

下面是RSA加密码器源代码:

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加密器_作者:李兴球"
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)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),
公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。
通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。
比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

"""
 

下面是RSA解密器源代码:

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

def decrypt():
    """解密函数,首先寻找私钥,然后打开加密后文本。"""
    private_file = 'private.pem'
    if not os.path.exists(private_file):                            # 文件不存在,显示提示信息。
        messagebox.showinfo(project_title,"没有找到私钥,无法解密。\n"  + private_file)
        return
        
    f = open(private_file,'r')                                      # 导入私钥,用于解密1
    privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())
    f.close()

    filename = "rsa加密码后文本.dat"
    if not os.path.exists(filename):
        messagebox.showinfo(project_title,"没有找到rsa加密码后文本,无法解密。\n"  + filename)
        return
        
    f = open(filename,mode='rb')
    crypto_text = f.read()
    f.close()    
    message = rsa.decrypt(crypto_text, privkey).decode()             # 解密
     
    txt_editor.insert(END, message)                                  # 放入文本框
        

project_title = "rsa解密器"
screen_width ,screen_height = 600,600    # canvas长和高
screen_size = str(screen_width) + "x" + str(screen_height)

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

canvas = Canvas(window,width = screen_width,height= screen_height,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_decrypt = ImageTk.PhotoImage(im1)     # 转换为tkinter能识别的图形对象:取名为 background
button_encrypt = Button(window,width=100 ,command=decrypt,image = button_image_decrypt)     #在window上新建 猜猜 按钮,命令为check,图形为button_image_guess
button_encrypt.place(x=50,y=510)                                                            #放置


window.mainloop()


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

"""