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