【发布时间】:2021-02-05 17:04:53
【问题描述】:
我在 python 中制作了这个程序,它可以加密和解密您输入到 Tkinter 滚动文本框中的字符串。加密由 13 个字符组成,例如“A”是“N”,“B”是“O”等等。这个程序不做的一件事是包括数字和特殊符号,如 ($ & ^ *) 以及更多。我想在 ASCII 表中包含所有可显示的字符,从空格“”开始到右大括号 }。
到目前为止,这是我的程序:
from tkinter import *
from tkinter.scrolledtext import *
root = Tk()
canvas = Canvas(root, width=800, height=600)
这是我目前拥有的加密和解密功能(这很可能是我需要更改的地方):
def encrypt_symbols(s):
s = s.upper()
output = ""
for ch in s:
if ch != " ":
num = ord(ch) + 13
if num > 90:
num = num - 26
output = output + chr(num)
else:
output = output + " "
return output
def decrypt_symbols(s):
s = s.upper()
output = ""
for ch in s:
if ch != " ":
num = ord(ch) - 13
if num < 65:
num = num + 26
output = output + chr(num)
else:
output = output + " "
return output
这部分只是 Tkinter 函数(它们与我的问题无关......我认为 :D):
label_plain = Label(root, text = "Plain Text")
label_encrypt = Label(root, text = "Encrypted Text")
label_plain.grid(row=0, column=0, padx=10, pady=10)
label_encrypt.grid(row=0, column=2, padx=10, pady=10)
textbox_plain = ScrolledText(root, width=30, height = 10,
bg = "#DDFFDD")
textbox_encrypt = ScrolledText(root, width=30, height = 10,
bg = "#DDDDFF")
textbox_plain.grid(row=1, column=0, padx=10, pady=10)
textbox_encrypt.grid(row=1, column=2, padx=10, pady=10)
这里是加密/解密过程的其他部分(我很确定它们不是我的问题的一部分):
def encrypt():
plain = textbox_plain.get(1.0, "end-1c")
e = encrypt_symbols(plain)
textbox_encrypt.delete(1.0, "end")
textbox_encrypt.insert(1.0, e)
def decrypt():
e = textbox_encrypt.get(1.0, "end-1c")
d = decrypt_symbols(e)
textbox_plain.delete(1.0, "end")
textbox_plain.insert(1.0, d)
frame1 = Frame(root)
frame1.grid(row=1, column=1)
be = Button(frame1, text = "Encrypt >>", command = encrypt)
bd = Button(frame1, text="<< Decrypt", command = decrypt)
be.grid(row = 0, column = 0, padx = 10, pady = 10)
bd.grid(row = 1, column = 0, padx = 10, pady = 10)
我该怎么办?我不认为这是一个复杂的修复,但我不知道如何去做......
您可以随意复制粘贴并自己弄乱程序!
谢谢!
【问题讨论】:
-
如果您包含其他 ASCII 字符,您将如何对字母表后半部分的字符进行编码?您会像在正常的 ROT13 中一样在 Z 之后回绕 A,还是可以将字母也编码为数字或标点字符?
-
@tobias_k 好问题 xD 我认为这些符号只会分配给其他符号,而不是字符
-
请从intro tour 重复on topic 和how to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。这不应该是一个程序设计讨论板。
标签: python encryption ascii