Block Cipher Python unichr()输出格式化问题

时间:2014-12-28 20:37:19

标签: python encryption ascii block-cipher

我正在尝试编写一个可以使用分组密码对文本进行加密和解密的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做了一些研究之后没有输出任何东西我发现它实际输出你'_____'(_____充当占位符的任何东西)。

我可能无法将我的ASCII值转换回字符,但这似乎不是最具创新性的解决方案。我也非常怀疑使用字符串添加到我的答案的有效性。最后,我只是在应用密码时通过我的密钥的字符进行回收,在做了一些研究之后,我听说了一些叫做填充的东西,我觉得我应该使用它。

所以请你帮我猜。

1 个答案:

答案 0 :(得分:0)

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