python的tkinter实现 凯撒密码的破解和解密

使用tkinter实现 凯撒密码的破解和解密

from tkinter import *
def encrypt():
    key = int(xls_text.get())
    message = xls_text1.get()
    str_list = list(message)
    i = 0
    while i <len(message):
        if not str_list[i].isalpha():
            str_list[i] = str_list[i]
        else:
            a = "A" if str_list[i].isupper() else "a"
            str_list[i] = chr((ord(str_list[i]) - ord(a) + key) % 26 + ord(a))
        i = i + 1
    result = ''.join(str_list)
    print(result)
    xls_text2.set(result)


def decrypt():
    key = int(xls_text.get())
    message = xls_text1.get()
    mode = 'decrypt'
    message = message.upper()
    LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    translated = ''
    for symbol in message:
        if symbol in LETTERS:
            num = LETTERS.find(symbol)

            if mode == 'encrypt':
                num = num+key
            elif mode == 'decrypt':
                num = num-key

            if num > len(LETTERS):
                num = num - len(LETTERS)
            elif num < 0:
                num = num + len(LETTERS)

            translated = translated + LETTERS[num]

        else:
            translated =translated + symbol
    result = translated.lower()
    print(result)
    xls_text2.set(result)


root = Tk()
root.geometry('800x700')
l1 = Label(root, text="请输入偏移量")
xls_text = StringVar()
xls = Entry(root, textvariable=xls_text)
l1.pack()
xls.pack()
l2 = Label(root, text="输入字符")
xls_text1 = StringVar()
xls1 = Entry(root, textvariable=xls_text1)
l2.pack()
xls1.pack()

B = Button(root, text="加密", command=encrypt)
B1 = Button(root, text="解密", command=decrypt)
B.pack()
B1.pack()
l_result = Label(root, text="结果")
l_result.pack()
xls_text2 = StringVar()
xls2 = Entry(root, textvariable=xls_text2)
xls_text2.set('')
xls2.pack()
root.mainloop()

运行结果:
在这里插入图片描述

thinker样式真的不好搞,就这样。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值