块密码Python unichr()输出格式问题

2024-06-28 11:08:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个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的东西,我觉得我应该使用它。在

所以请帮我猜。在


Tags: keytextanswer文本脚本密码列表ascii
1条回答
网友
1楼 · 发布于 2024-06-28 11:08:53

您可以继续将密文视为字节(例如,您可以存储二进制文件或通过HTTP发送二进制数据),也可以使用base64或十六进制编码将其编码为文本。在解密之前,当然应该将字符串解码回二进制密文。在

相关问题 更多 >