
(1) 加密后的密文:vhfxulwb
(2) 解密函数:d(a)=(a-k+26)mod 26
(3) 编程实现:界面类似于下图中的界面,语言工具语言不限,但要说明开发运行环境,如Python3、VC6、Java SE 8等等。
开发运行环境说明:Python3
import PySimpleGUI as simpleGui
import datetime
def dealMainWindowOpenWindowEvent(window2):
try:
if not window2:
window2 = make_window2()
window2.make_modal() # 这行代码把当前窗口设置为有模式的
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
return window2
def dealMainWindowEncryptEvent(values):
try:
text = values['keyMainWindowPlaintext']
if text.strip() == "":
simpleGui.popup_error("提示", "请先输入明文!")
else:
# simpleGui.popup("提示", "请自己实现加密函数!")
s=""
text=list(map(str,text))
for i in range(len(text)):
text[i]=chr((ord(text[i]) - ord('a') + int(values['keyMainWindowKey'])) % 26 + ord('a'))
s+=text[i]
return s
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
def dealMainWindowDecryptEvent(values):
try:
text = values['keyMainWindowCiphertext']
if text.strip() == "":
simpleGui.popup_error("提示", "请先输入密文!")
else:
# simpleGui.popup("提示", "请自己实现加密函数!")
s = ""
text = list(map(str, text))
for i in range(len(text)):
text[i] = chr((ord(text[i]) - ord('a') -int(values['keyMainWindowKey'])+26) % 26 + ord('a'))
s += text[i]
return s
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
def dealWindow2OkEvent(window2, values):
newText = ""
try:
newText = values['keyWindow2ulText']
window2.close()
window2 = None
except Exception as result:
print("函数 dealWindow2Event 捕捉到异常:%s" % result)
return window2, newText
def make_window2():
try:
# 创建 window2 布局
window2Layout = [
[simpleGui.Text('文本'), simpleGui.Input('新窗口默认文本 hello gui。', key='keyWindow2ulText')],
[simpleGui.Button('确定', key='keyWindow2Ok'), simpleGui.Button('取消', key='keyWindow2Cancel')]
]
window2 = simpleGui.Window("打开新窗口", window2Layout, finalize=True)
return window2
except Exception as result:
print("make_window2 捕捉到异常:%s" % result)
def main():
try:
# 创建 mainWindow 布局
mainWindowLayout = [
[simpleGui.Text('明文'), simpleGui.Input(key='keyMainWindowPlaintext', size=(80, 1)), ],
[simpleGui.Text('密钥'), simpleGui.Input(key='keyMainWindowKey', size=(80, 1)), ],
[simpleGui.Text('密文'), simpleGui.Input(key='keyMainWindowCiphertext', size=(80, 1)), ],
[simpleGui.Text('文本'), simpleGui.Multiline(key='keyMainWindowMulText', size=(80, 8))],
[simpleGui.Button('加密', key='keyMainWindowEncrypt'),
simpleGui.Button('解密', key='keyMainWindowDecrypt'),
simpleGui.Button('打开新窗口', key='keyMainWindowOpenWindow'), ],
[simpleGui.Button('确定', key='keyMainWindowOk'), simpleGui.Button('取消', key='keyMainWindowCancel')],
]
# 创建窗口,引入布局,并进行初始化。
mainWindow = simpleGui.Window('对称加密演示程序', layout=mainWindowLayout, finalize=True)
# 暂时先不创建window2
window2 = None
# 创建一个事件循环,否则窗口运行一次就会被关闭。
while True:
window, event, values = simpleGui.read_all_windows()
print(window, event, values) # 可以打印一下着看变量的内容
if window == mainWindow:
if event in (simpleGui.WIN_CLOSED, 'keyMainWindowOk', 'keyMainWindowCancel'):
break
elif event == 'keyMainWindowOpenWindow':
window2 = dealMainWindowOpenWindowEvent(window2)
elif event == 'keyMainWindowEncrypt':
min=dealMainWindowEncryptEvent(values)
mainWindow['keyMainWindowCiphertext'].update(min)
elif event == 'keyMainWindowDecrypt':
# simpleGui.popup("提示", "请自己实现解密函数!")
max=dealMainWindowDecryptEvent(values)
mainWindow['keyMainWindowMulText'].update(max)
if window == window2:
if event in (simpleGui.WIN_CLOSED, 'keyWindow2Cancel'):
window2.close()
window2 = None
elif event == 'keyWindow2Ok':
window2, newText = dealWindow2OkEvent(window2, values)
text = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n从window2获得文本:\n" + newText
mainWindow['keyMainWindowMulText'].update(text)
# 关闭窗口
mainWindow.close()
if window2 is not None:
window2.close()
except Exception as result:
print("函数 main 捕捉到异常:%s" % result)
if __name__ == '__main__':
main()

(1) 加密后的密文:hrlnedkz
(2) 解密函数:d=(9(m-5)) mod 26*
(3) 编程实现:界面类似于下图中的界面,语言工具语言不限,但要说明开发运行环境,如Python3、VC6、Java SE 8等等。
开发运行环境说明:Python3
import PySimpleGUI as simpleGui
import datetime
def dealMainWindowOpenWindowEvent(window2):
try:
if not window2:
window2 = make_window2()
window2.make_modal() # 这行代码把当前窗口设置为有模式的
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
return window2
def dealMainWindowEncryptEvent(values):
try:
text = values['keyMainWindowPlaintext']
if text.strip() == "":
simpleGui.popup_error("提示", "请先输入明文!")
else:
# simpleGui.popup("提示", "请自己实现加密函数!")
s=""
text=list(map(str,text))
for i in range(len(text)):
text[i]=chr((3*(ord(text[i])- ord('a'))+5) % 26 + ord('a'))
s+=text[i]
return s
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
def dealMainWindowDecryptEvent(values):
try:
text = values['keyMainWindowCiphertext']
if text.strip() == "":
simpleGui.popup_error("提示", "请先输入密文!")
else:
# simpleGui.popup("提示", "请自己实现解密函数!")
s = ""
text = list(map(str, text))
for i in range(len(text)):
text[i] = chr((((ord(text[i])- ord('a'))-5)*9) % 26 + ord('a'))
s += text[i]
return s
except Exception as result:
print("函数 dealMainWindowEvent 捕捉到异常:%s" % result)
def dealWindow2OkEvent(window2, values):
newText = ""
try:
newText = values['keyWindow2ulText']
window2.close()
window2 = None
except Exception as result:
print("函数 dealWindow2Event 捕捉到异常:%s" % result)
return window2, newText
def make_window2():
try:
# 创建 window2 布局
window2Layout = [
[simpleGui.Text('文本'), simpleGui.Input('新窗口默认文本 hello gui。', key='keyWindow2ulText')],
[simpleGui.Button('确定', key='keyWindow2Ok'), simpleGui.Button('取消', key='keyWindow2Cancel')]
]
window2 = simpleGui.Window("打开新窗口", window2Layout, finalize=True)
return window2
except Exception as result:
print("make_window2 捕捉到异常:%s" % result)
def main():
try:
# 创建 mainWindow 布局
mainWindowLayout = [
[simpleGui.Text('明文'), simpleGui.Input(key='keyMainWindowPlaintext', size=(80, 1)), ],
# [simpleGui.Text('密钥'), simpleGui.Input(key='keyMainWindowKey', size=(80, 1)), ],
[simpleGui.Text('密文'), simpleGui.Input(key='keyMainWindowCiphertext', size=(80, 1)), ],
[simpleGui.Text('文本'), simpleGui.Multiline(key='keyMainWindowMulText', size=(80, 8))],
[simpleGui.Button('加密', key='keyMainWindowEncrypt'),
simpleGui.Button('解密', key='keyMainWindowDecrypt'),
simpleGui.Button('打开新窗口', key='keyMainWindowOpenWindow'), ],
[simpleGui.Button('确定', key='keyMainWindowOk'), simpleGui.Button('取消', key='keyMainWindowCancel')],
]
# 创建窗口,引入布局,并进行初始化。
mainWindow = simpleGui.Window('对称加密演示程序', layout=mainWindowLayout, finalize=True)
# 暂时先不创建window2
window2 = None
# 创建一个事件循环,否则窗口运行一次就会被关闭。
while True:
window, event, values = simpleGui.read_all_windows()
print(window, event, values) # 可以打印一下着看变量的内容
if window == mainWindow:
if event in (simpleGui.WIN_CLOSED, 'keyMainWindowOk', 'keyMainWindowCancel'):
break
elif event == 'keyMainWindowOpenWindow':
window2 = dealMainWindowOpenWindowEvent(window2)
elif event == 'keyMainWindowEncrypt':
min=dealMainWindowEncryptEvent(values)
mainWindow['keyMainWindowCiphertext'].update(min)
elif event == 'keyMainWindowDecrypt':
# simpleGui.popup("提示", "请自己实现解密函数!")
max=dealMainWindowDecryptEvent(values)
mainWindow['keyMainWindowMulText'].update(max)
if window == window2:
if event in (simpleGui.WIN_CLOSED, 'keyWindow2Cancel'):
window2.close()
window2 = None
elif event == 'keyWindow2Ok':
window2, newText = dealWindow2OkEvent(window2, values)
text = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n从window2获得文本:\n" + newText
mainWindow['keyMainWindowMulText'].update(text)
# 关闭窗口
mainWindow.close()
if window2 is not None:
window2.close()
except Exception as result:
print("函数 main 捕捉到异常:%s" % result)
if __name__ == '__main__':
main()