Python 实现凯撒密码加解密(界面化)

要实现Python界面化我们首先要引入tkinter库

from tkinter import *
from tkinter.ttk import Combobox

先是自定义函数实现凯撒密码,这部分比较简单

恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3),这时可以使用rot3来表示:

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ 

密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

def kaisa(event):
    key=int(t1.get())                        //偏移量
    message=str(t2.get()).upper()            //密文
    dic={0:'加密',1:'解密'}
    model=dic[comb.current()]
    letter='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    sult=''
    for i in message:
        if i in letter:
            num=letter.find(i)
            if model=='加密':
                num=num+key
            if model=='解密':
                num=num-key
            if num>=len(letter):
                num=num-len(letter)
            if num<0:
                num=num+len(letter)
            sult=sult+letter[num]
        else:
            sult=sult+i
    lib.config(text=str(sult))  //输出结果

接下来就是写界面 ,我们用到Tk库中的一些函数来实现,具体函数用法大家可以去官网学习,这里放出我的代码,第一次用这个库界面不是很美观,大家可以调整

root = Tk()
root.title('凯撒密码')
root.geometry('500x400')

t1=Entry(root)
t1.place(relx=0.2,rely=0.1,relwidth=0.2,relheight=0.05)
t1.insert(5,'输入偏移量')

t2=Entry(root)
t2.place(relx=0.2,rely=0.2,relwidth=0.6,relheight=0.05)
t2.insert(5,'输入字符串')

var=StringVar()

comb=Combobox(root,textvariable=var,values=['加密','解密'])
comb.place(relx=0.2,rely=0.3,relwidth=0.2,relheight=0.1)

b1=Button(root,text='运行')
b1.place(relx=0.2,rely=0.4,relwidth=0.2,relheight=0.1)
b1.bind('<1>',kaisa)

lib=Label(root,text='结果')
lib.place(relx=0.2,rely=0.6,relwidth=1,relheight=0.3)

root.mainloop()

这就是最后运行的界面

 

 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值