GUIインターフェースに基づくシーザーパスワードの実現

GUIインターフェイスに基づくCaesarパスワードの実装には、Caesarパスワード暗号化、復号化ロジックの実装、およびGUI表示モジュールの2つのモジュールが含まれます。以前に記述したCaesarパスワードを簡単に拡張して、TKINTを練習したいと思います。この記事を書きました。

シーザーコード

パスワードの暗号化と復号化に関しては、暗号化プロセスは比較的単純であり、シフト操作で完了することができます。復号化は、移動されたビット数を知る必要があります。ここでは、統計ベースの実装を使用します。あなたが興味を持っているなら、あなたは私の最初のブログを読むことができます 背後にGUIコードがあります完全なコードについてはgithubを参照してください

GUIデザイン

次の図に示すように、ユーザー入力、3つのボタン、およびモバイルキーの選択が含まれます。

j暗号化の手順は次のとおりです。

すべて最高のレビュー基準に従って選択されています。AAAI-21は、主流のAIトピックに関する提出と、関連分野での斬新な横断的作業を歓迎します。」

2番目のステップはキーを選択することです

3番目のステップは暗号化を選択することです

キーが選択されていない場合に警告します!!!

復号化の手順は上記と同じです。

代わりにクリックして復号化するだけです。キーを入力する必要はありません。便宜上、上記の暗号化結果を使用しました。特殊文字のため、一部の復号化結果はあまり理想的ではありません(テストケースは比較的短い)。他の方法を試してみます。純粋な文字の長いテキストいつ、効果は基本的に正常に復号化されます!

その他のテスト結果:

 


# -*- coding: utf-8 -*-
"""
Created on Fri Jul 31 18:43:45 2020

@author: 1002
"""
import tkinter as tk

from tkinter import ttk

from CaesarCiper import CaesarCiper


window=tk.Tk()
window.title('Caesar Cipher')  #窗口名字  
window.geometry('800x600')   #窗口size
'''
# Entry的第一个参数是父窗口,即这里的window
# *表示输入的文本变为星号,在Entry不可见内容,若为None则表示为输入文本以原形式可见
e=tk.Entry(window,show='*')
e.pack()
'''

#文本输入
inputTxt=tk.Text(window,height=10)  
inputTxt.pack(side = 'top')

optCode = CaesarCiper()


def encode():
    var = inputTxt.get('0.0','end')
    k = process_combobox()
    codeText = optCode.encoder(var,k)
    var = "out>>"+codeText
    resultTxt.insert('insert',var)

    
def decode():
    var = inputTxt.get('0.0','end')
    decodeText = optCode.decoder(var)
    var = "out>>"+decodeText
    resultTxt.insert('end',var)
    
def clear_input():
    inputTxt.delete('0.0','end')

def process_combobox():
    varCom  = com.get()
    if varCom == "下拉选择移动key值":
        key = 0
        resultTxt.insert('end',"(warning,没有选择key,默认key为0)")
        return 0
    else:
        key = int(varCom)
        return key
    
        
#这里的end表示插入在结尾,可以换为1.2,则插入在第一行第二位后面
b1=tk.Button(window,text='凯撒加密',width=15,height=2,command=encode)
b1.pack()

b1=tk.Button(window,text='凯撒解密',width=15,height=2,command=decode)
b1.pack()

b2=tk.Button(window,text='清空',width=15,height=2,command=clear_input)
b2.pack()

#文本输出
resultTxt=tk.Text(window,height=30)     #这里设置文本框高,可以容纳两行
resultTxt.pack(side = 'left')

#下拉框
cv= tk.StringVar()
com=ttk.Combobox(window,text='key',textvariable=cv)
com.pack()
#设置下拉数据
com["value"]=("下拉选择移动key值","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","26")
#设置默认值
com.current(0)

key =0

window.mainloop()

 

おすすめ

転載: blog.csdn.net/qq_39463175/article/details/107850079