一只夜目发出了咕咕咕的声音(
熬了几天夜搞定了……
老师:啥,这还用熬夜
我:(丢人.jpg)
有一些检测没写,考完再说8
懒得改了!就这样吧(……)除了古典密码基本都是废的(
实名diss自带的tkinter。
链接:https://pan.baidu.com/s/1YY6DMN-_n9Qb5fVpMP6HzQ 密码:z53y
部分代码
#coding = utf-8
'''
●Affine v1.0
作者:Kadoya
创建时间:18.2.25
最近修改:18.7.5
①函数重构以适应界面需要
'''
def findmodinverse(a,m):
u1,u2,u3 = 1,0,a
v1,v2,v3 = 0,1,m
while v3 !=0:
q = u3 // v3
v1,v2,v3,u1,u2,u3 = (u1-q*v1),(u2-q*v2),(u3-q*v3),v1,v2,v3
return u1%m
def en(mess,k1,k2):
lett='abcdefghijklmnopqrstuvwxyz'
translated=''
for i in mess:
a=lett[(lett.index(i.lower())*k1+k2)%26]
if i in lett:
translated+=a
else:
translated+=a.upper()
return translated
def de(mess,k1,k2):
lett='abcdefghijklmnopqrstuvwxyz'
invk1=findmodinverse(k1,26)
translated=''
for i in mess:
a=lett[invk1*(lett.index(i.lower())-k2)%26]
if i in lett:
translated+=a
else:
translated+=a.upper()
return translated
'''
●Vigenere v1.0
作者:Kadoya
创建时间:17.12.8
最近修改:18.3.15
①修正对明/密文中数字的兼容性
②函数重构以适应界面需要
'''
def en(mess,key):
letter='abcdefghijklmnopqrstuvwxyz'
translated = ''
for i in range(len(mess)):
j = i % len(key)
k = letter.index(key[j])
try:
m = letter.index(mess[i])
except:
translated += mess[i]
key=key[-1]+key[:-1]
continue
translated += letter[(m+k)%26]
return translated
def de(mess,key):
letter='abcdefghijklmnopqrstuvwxyz'
translated = ''
for i in range(len(mess)):
j = i % len(key)
k = letter.index(key[j])
try:
m = letter.index(mess[i])
except:
translated += mess[i]
key=key[-1]+key[:-1]
continue
if m < k:
m += 26
translated += letter[m-k]
return translated
#coding = utf-8
'''
●Hill v1.0
作者:Kadoya
创建时间:18.3.31
最近修改:18.7.5
①函数重构以适应界面需要
'''
from math import *
import numpy as np
def mod(x,y,z):
while x%y!=0:
x+=z
return int(x/y%z)
def mult(letter,mat,key):#求矩阵乘
return [letter[sum((i*j)for i,j in zip(c,d))%26] for c in mat for d in key]
def en(mess,k):
letter='abcdefghijklmnopqrstuvwxyz'
mess=[letter.index(i) for i in mess.replace(' ','')]
k=[int(i)for i in k.split(' ')]
a=sqrt(len(k))
if a%1!=0:
return 'error'
a=int(a)#矩阵阶数
if len(mess)%a!=0:
mess+=[letter.index('e') for i in range(a-len(mess)%a)]#填充约定字符
mat=[[]]*ceil(len(mess)/a)
for i in range(ceil(len(mess)/a)):
mat[i]=mess[a*i:a*(i+1)]#文本矩阵
key=[k[i::a] for i in range(a)]#密钥矩阵,为了算的时候方便竖着来的
translated=''.join(mult(letter,mat,key))#计算
return translated
def de(mess,k):
letter='abcdefghijklmnopqrstuvwxyz'
mess=[letter.index(i) for i in mess]
k=[int(i)for i in k.split(' ')]
a=sqrt(len(k))#矩阵阶数
if a%1!=0:
return 'error'
a=int(a)
mat=[[]]*ceil(len(mess)/a)
for i in range(ceil(len(mess)/a)):
mat[i]=mess[a*i:a*(i+1)]#文本矩阵
key=[k[a*i:a*(i+1)] for i in range(a)]
getdet=round(np.linalg.det(key))#计算det(k)的值
k2=[]
for i in range(a):
for j in range(a):
t=key[0:j]+key[j+1:]
t=[t[b][0:i]+t[b][i+1:] for b in range(len(t))]#拿到子矩阵
c=int(((-1)**(i+j+2))*round(np.linalg.det(t))%26)
k2.append(c)
k2=[mod(k2[i],getdet,26)for i in range(len(k2))]
key=[k2[i::a] for i in range(a)]#密钥矩阵,为了算的时候方便竖着来的
translated=''.join(mult(letter,mat,key))#计算
return translated
#print (en('pay more money','17 17 5 21 18 21 2 2 19'))
#print (de('rrlmwbkaspdh','17 17 5 21 18 21 2 2 19'))
'''
一个窗口
ver0.2 update 18.3.15
ver0.5 update 18.7.7
Kadoya
'''
from tkinter import *
from tkinter import ttk
import caesar
import affine
import playfair
import vigenere
import hill
import aes
import DES
import RSA
import ELGamal
import SHA1
import rc4
def allclear():
for i in f1.grid_slaves():
i.grid_forget()
for i in f2.grid_slaves():
i.grid_forget()
if len(root.grid_slaves())!=3:
a=root.grid_slaves()[-1]
a.grid_forget()
flag=1
def CaesarTK():
def caesarF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
if v==0:
mess=caesar.en(src,key)
else:
mess=caesar.de(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:caesar_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:caesar_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=6, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=5,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=7, column=0,columnspan=4,rowspan=1,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
Caesar_button = Button(f2, text="Caesar Go!", width=10,command=caesarF)
Caesar_button.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def AffineTK():
def affineF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key1=k1.get()
key2=k2.get()
if src and key1:
try:
if v==0:
mess=affine.en(src,key1,key2)
else:
mess=affine.de(src,key1,key2)
#输出到界面
result_data_Text.delete(1.0,END)
#print(mess)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:affine_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:affine_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k1):")
key_label.grid(row=6, column=0)
key_label = Label(f1, text="密钥(k2):")
key_label.grid(row=6, column=2)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=5,sticky=W)
k1 = IntVar()#key1
k1Chosen = ttk.Combobox(f1, width=12, textvariable=k1)
k1Chosen['values'] = (3,5,7,9,11,15,17,19,21,23,25)
k1Chosen.grid(column=0, row=7)
k1Chosen.current(0)
k2 = IntVar()#key2
k2Chosen = ttk.Combobox(f1, width=12, textvariable=k2)
k2Chosen['values'] = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
k2Chosen.grid(column=2, row=7)
k2Chosen.current(0)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
Caesar_button = Button(f2, text="Affine Go!", width=10,command=affineF)
Caesar_button.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def PlayfairTK():
def playfairF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
mess=playfair.main(src,key,v)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:playfair_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:playfair_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=6, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=5,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=7, column=0,columnspan=4,rowspan=1,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
Caesar_button = Button(f2, text="Playfair Go!", width=10,command=playfairF)
Caesar_button.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def VigenereTK():
def vigenereF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
if v==0:
mess=vigenere.en(src,key)
else:
mess=vigenere.de(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:playfair_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:playfair_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=6, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=5,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=7, column=0,columnspan=4,rowspan=1,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
Caesar_button = Button(f2, text="Vigenere Go!", width=10,command=vigenereF)
Caesar_button.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def HillTK():
def hillF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
if v==0:
mess=hill.en(src,key)
else:
mess=hill.de(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:hill_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:hill_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥,以空格隔开(k):")
key_label.grid(row=6, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=5,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=7, column=0,columnspan=4,rowspan=1,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
Caesar_button = Button(f2, text="Hill Go!", width=10,command=hillF)
Caesar_button.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def AesTK():
def aesF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
if v==0:
mess=aes.en(src,key)
else:
mess=aes.de(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:AES_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:AES_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=5, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=4,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=6, column=0,columnspan=4,rowspan=2,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
GObutton = Button(f2, text="AES Go!", width=10,command=aesF)
GObutton.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def DesTK():
def desF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
if v==0:
mess=DES.en(src,key)
else:
mess=DES.de(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:DES_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:DES_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=5, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=4,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=6, column=0,columnspan=4,rowspan=2,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
GObutton = Button(f2, text="DES Go!", width=10,command=desF)
GObutton.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def RsaTK():
def rsaF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
p = int(p_Text.get(1.0,END).strip().replace("\n",""))
q = int(q_Text.get(1.0,END).strip().replace("\n",""))
e = int(e_Text.get(1.0,END).strip().replace("\n",""))
print(p,'\n',q,'\n',e)
if src and p and q and e:
try:
if v==0:
mess=RSA.en(p,q,e,src)
else:
src=int(src)
mess=RSA.de(p,q,e,src)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:RSA_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:RSA_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
p_label = Label(f1, text="密钥(p):")
p_label.grid(row=5, column=0,sticky=W)
q_label = Label(f1, text="密钥(q):")
q_label.grid(row=5, column=1,sticky=W)
e_label = Label(f1, text="密钥(e):")
e_label.grid(row=5, column=2,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=3,sticky=W)
p_Text = Text(f1, width=12, height=1) # 密钥
p_Text.grid(row=6, column=0,columnspan=4,rowspan=2,sticky=W)
q_Text = Text(f1, width=12, height=1) # 密钥
q_Text.grid(row=6, column=1,columnspan=4,rowspan=2,sticky=W)
e_Text = Text(f1, width=12, height=1) # 密钥
e_Text.grid(row=6, column=2,columnspan=4,rowspan=2,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
GObutton = Button(f2, text="RSA Go!", width=10,command=rsaF)
GObutton.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def ELGamalTK():
def elgamalF():
v=var.get()
src = init_data_Text.get(1.0,END).strip().replace("\n","")
x = int(x_Text.get(1.0,END).strip().replace("\n",""))
p = int(p_Text.get(1.0,END).strip().replace("\n",""))
g = int(g_Text.get(1.0,END).strip().replace("\n",""))
if src and x and p and g:
try:
if v==0:
src=int(src)
mess=ELGamal.en(src,x,p,g)
else:
c1,c2=src.split(' ')
c1,c2=int(c1),int(c2)
mess=ELGamal.de(c1,c2,x,p)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
if v == 0:
result_data_Text.insert(1.0,"ERROR:ELGamal_encode failed")
else:
result_data_Text.insert(1.0,"ERROR:ELGamal_decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
x_label = Label(f1, text="私钥(x):")
x_label.grid(row=5, column=0,sticky=W)
p_label = Label(f1, text="参数(p):")
p_label.grid(row=5, column=1,sticky=W)
g_label = Label(f1, text="生成元(g):")
g_label.grid(row=5, column=2,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=4,sticky=W)
x_Text = Text(f1, width=12, height=1) # 密钥
x_Text.grid(row=6, column=0,columnspan=4,rowspan=2,sticky=W)
p_Text = Text(f1, width=12, height=1) # 密钥
p_Text.grid(row=6, column=1,columnspan=4,rowspan=2,sticky=W)
g_Text = Text(f1, width=12, height=1) # 密钥
g_Text.grid(row=6, column=2,columnspan=4,rowspan=2,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
GObutton = Button(f2, text="ELGamal Go!", width=10,command=elgamalF)
GObutton.grid(row=0,padx=15,pady=15)
#复选框
var = IntVar()
checkbutton = Checkbutton(f2, text='decode', variable=var)
checkbutton.grid(row=9)
def Sha1TK():
def sha1F():
src = init_data_Text.get(1.0,END).strip().replace("\n","")
if src:
try:
mess=SHA1.en(src)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"ERROR:SHA-1_encode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=7, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=7) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=6,sticky=W)
result_data_Text = Text(f1, width=60, height=8) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=6,sticky=W)
#按钮
Caesar_button = Button(f2, text="SHA1 Go!", width=10,command=sha1F)
Caesar_button.grid(row=0,padx=15,pady=15)
def Rc4TK():
def rc4F():
src = init_data_Text.get(1.0,END).strip().replace("\n","")
key = key_data_Text.get(1.0,END).strip().replace("\n","")
if src and key:
try:
mess=rc4.ende(src,key)
#输出到界面
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,mess)
except:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"突然失败不知所措,检查一下函数吧")
else:
result_data_Text.delete(1.0,END)
result_data_Text.insert(1.0,"ERROR:RC4_encode/decode failed")
allclear()
#标签
init_label = Label(f1, text="文本(c/m):")
init_label.grid(row=0, column=0,sticky=W)
key_label = Label(f1, text="密钥(k):")
key_label.grid(row=5, column=0,sticky=W)
result_label = Label(f1, text="结果(m/c):")
result_label.grid(row=8, column=0,sticky=W)
#文本框
init_data_Text = Text(f1, width=60, height=6) #原始数据录入框
init_data_Text.grid(row=1, column=0,columnspan=4,rowspan=4,sticky=W)
key_data_Text = Text(f1, width=60, height=1) # 密钥
key_data_Text.grid(row=6, column=0,columnspan=4,rowspan=2,sticky=W)
result_data_Text = Text(f1, width=60, height=6) #处理结果展示
result_data_Text.grid(row=9, column=0,columnspan=4,rowspan=5,sticky=W)
#按钮
GObutton = Button(f2, text="RC4 Go!", width=10,command=rc4F)
GObutton.grid(row=0,padx=15,pady=15)
root = Tk()
root.title("crypto tools")
root.geometry('544x300+400+150')
root.iconbitmap('ruina.ico')
root.resizable(0, 0)
photo = PhotoImage(file='back.png')
plabel = Label(root,image=photo)
plabel.image = photo
plabel.grid(padx=0,pady=0)
menubar = Menu(root)
content=[['Caesar','Affine','Playfair','Vigenere','Hill'],['AES','DES'],['RSA','ELGamal'],['SHA-1'],['RC4']]
Main=['古典密码','对称密码','非对称密码','杂凑函数','序列密码']
#for i in range(len(Main)):
#新建一个空的菜单,将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label = content[0][0],command = CaesarTK)
filemenu.add_command(label = content[0][1],command = AffineTK)
filemenu.add_command(label = content[0][2],command = PlayfairTK)
filemenu.add_command(label = content[0][3],command = VigenereTK)
filemenu.add_command(label = content[0][4],command = HillTK)
menubar.add_cascade(label=Main[0], menu=filemenu)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label = content[1][0],command = AesTK)
filemenu.add_command(label = content[1][1],command = DesTK)
menubar.add_cascade(label=Main[1], menu=filemenu)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label = content[2][0],command = RsaTK)
filemenu.add_command(label = content[2][1],command = ELGamalTK)
menubar.add_cascade(label=Main[2], menu=filemenu)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label = content[3][0],command = Sha1TK)
menubar.add_cascade(label=Main[3], menu=filemenu)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label = content[4][0],command = Rc4TK)
menubar.add_cascade(label=Main[4], menu=filemenu)
global f1,f2
f1 = Frame(root,width=425,height=332,borderwidth=2)
f1.grid(row=1, column=0,sticky=N+W)
f2 = Frame(root,width=115,height=332,borderwidth=2)
f2.grid(row=1, column=1,sticky=N+E)
C_label = Label(root, text="(c)yemu 2018.3.15")
C_label.grid(row=2, column=0,columnspan=2)
root['menu'] = menubar
root.mainloop()
网友评论