【发布时间】:2018-03-22 12:24:54
【问题描述】:
import base64
import re
def encrypt(cleartext, key):
to_return = bytearray(len(cleartext))
for i in xrange(len(cleartext)):
to_return[i] = ord(cleartext[i]) ^ ord(key)
return base64.encodestring(str(to_return))
def decrypt(ciphertxt,key):
x = base64.decodestring(re.escape(ciphertxt))
to_return = bytearray(len(x))
for i in xrange(len(x)):
to_return[i] = ord(x[i]) ^ ord(key)
while to_return[i]>127:
to_return[i]-=127
return to_return
当我加密 bob 然后使用我的解密函数时,它会返回 bob。但是,对于较长的内容,例如加密后的段落,密文包含 \ 斜杠,它不起作用。我没有返回 ascii 字符或 base64 字符我返回奇怪的汉字或方形字符。请任何能指出我正确方向的见解都会有所帮助。
【问题讨论】:
-
你到底为什么在这里使用
re.escape()?那是为了准备正则表达式搜索模式。在它对您的字符串进行任何更改的情况下,它会从那时起完全破坏 Base64 编码。 -
顺便说一句,这不是凯撒密码的一种形式。
-
您不必担心其中带有反斜杠的字符串,除非它们是您在脚本中键入的文字字符串。
-
请不要破坏您的问题或试图破坏人们提交的答案!
-
当您将材料发布到 Stack Overflow 时,您已同意允许 Stack Overflow 使用该材料,它不再是您的唯一财产。请参阅here。
标签: python python-2.7 encryption