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