我正在尝试编写一个python脚本,它可以使用块密码对文本进行加密和解密,但是我一直得到完全空白的输出。在试图找到问题的根源后,我意识到在我执行了XOR位操作(a^b)之后,我的脚本无法将新的ascii值转换为字符。在
def blockcrypt(text,key):
rawkeylist = rawintkey(key)
textlist = asciitextlist(text)
answer=''
kli = 0
for element in textlist:
answer+=str(unichr(element^rawkeylist[kli]))
kli+=1
if kli==len(rawkeylist):
kli=kli%len(rawkeylist)
return answer
其中rawkeylist是转换为每个字符的ascii值(十进制)列表的原始密钥。而textlist则是将文本转换成十进制ascii值的列表。我已经用print确认这些输出的列表是正确的。在
问题是我尝试过的几个输入都没有得到答案。更重要的是,通过将print替换到不同的位置,我发现str(unichr(element^rawkeylist[kli])) 在对unichr做了一点研究之后,我发现它实际上输出的是u''uuyuuuu'(其中uuuuuuuuuu充当了任何东西的占位符)。在
我无法将ASCII值转换回字符,但这似乎不是最具创新性的解决方案。我也很怀疑用字符串来补充我的答案是否有效。最后,我只是简单地在应用密码时循环使用我的密钥的字符,在做了一些研究之后,我听说了一种叫做padding的东西,我觉得我应该使用它。在
所以请帮我猜。在
您可以继续将密文视为字节(例如,您可以存储二进制文件或通过HTTP发送二进制数据),也可以使用base64或十六进制编码将其编码为文本。在解密之前,当然应该将字符串解码回二进制密文。在
相关问题 更多 >
编程相关推荐