所以我在python中编写了一个小脚本,它带有一个带有2个按钮和一个文本字段的gui.您键入文本区域并单击加密,文本突然看起来很疯狂.coooooool.
但是当你点击解密时,它不会回到原来的状态.这是代码
from Tkinter import *
import ttk
root = Tk()
textArea = Text(root, state = "normal")
def encrypt():
message = textArea.get('1.0', 'end')
newMessage = ''
lastChar = ''
for c in message:
if lastChar != '':
newMessage += chr((ord(c) + ord(lastChar)) % 256)
lastChar = chr((ord(c) + ord(lastChar)) % 256)
else:
newMessage += chr((ord(c) + 5) % 256)
lastChar = chr((ord(c) + 5) % 256)
textArea.delete('1.0', 'end')
textArea.insert('end', newMessage)
def decrypt():
message = textArea.get('1.0', 'end')
newMessage = ''
lastChar = ''
for c in message:
if lastChar != '':
newMessage += chr((ord(c) - ord(lastChar)) % 256)
lastChar = chr((ord(c) - ord(lastChar)) % 256)
else:
newMessage += chr((ord(c) - 5) % 256)
lastChar = chr((ord(c) - 5) % 256)
textArea.delete('1.0', 'end')
textArea.insert('end', newMessage)
encrypt = ttk.Button(root, text = "Encrypt", command = encrypt)
encrypt.pack({"side": "top"})
decrypt = ttk.Button(root, text = "Decrypt", command = decrypt)
decrypt.pack({"side": "top"})
textArea.pack({"side": "bottom"});
mainloop()
Run Code Online (Sandbox Code Playgroud)
问题是它没有显示原始文本.它似乎让它更加神秘.这有什么不对?请帮忙.
更新:更改它,所以它只是添加5.它的工作原理.所以这告诉我,这是我添加最后一个字符代码值的部分.还有一个问题:它添加了一个新行和这个奇怪的行字符(不是管道---> |).
现在代码是固定的.谢谢.结果如下:WW1ueCVueCV1d2p5eX4laHR0cTMlWW1mc3AlfnR6JXh5ZmhwJXR7andrcXR8JWt0dyV5bWolZnN4fGp3Mw8 =
在我解密之后所以它不会带走五个,它起作用了.再次感谢.
您不能将任意字节放入文本区域.
您的加密算法纯粹按字节顺序 - 它适用于字符的数值.即使对于ASCII,这也不会起作用,因为字节0是NUL特殊处理的ASCII ,而字节127('Z',字符122,当向上移动5时)是一个DEL字符:不是你想要的!超越ASCII,现实世界的UTF-8有数千个无效字节序列.
如果您要使用这样的字节加密,则无法将结果放入文本字段 - 它是二进制数据.如果您希望它能够进入文本字段,则必须确保它是没有控制字符,NUL字节或无效字节序列的有效文本.
制作二进制卫生的一种简单方法是对加密进行Base64编码,并将解密的第一步作为Base64解码.
最后说明:您还要加密文本区域末尾的换行符.可能不是你想做的事情.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |