我正在尝试在 python 中做一个简单的加密脚本。我只想对二进制文件使用 XOR 加密。我的脚本基本上看起来像:
def xor_c ( a ):
v=''
for p in a:
v += chr((ord(p) ^ 0xA8))
return v
这样做的目的只是单独加密每个字节。这应该可行,但我所做的所有尝试都失败了。
我第一次尝试:
handler = open("file",'r')
handler2 = open("output",'w')
contents = handler.read()
handler2.write(xor_c(xor_c(contents)))
但执行后这两个文件file
又output
不同了。由于输入文件是二进制文件(我想要的),我已将脚本更改为:
handler = open("file",'rb')
handler2 = open("output",'wb')
contents = handler.read()
handler2.write(xor_c(xor_c(contents)))
但这并没有改变任何东西。从它的样子来看,一些字节在输出中仅转换为一个字节(可能是因为字符不是 ascii,但这不应该在二进制模式下发生......)。此外,输出的最后一个字节是0xA8
(逻辑上来自\0
输入文件末尾的转换。考虑到这一点,我还将xor_c
函数更改为:
def xor_c ( a ):
v=''
for p in a:
v += chr((ord(p) ^ 0xA8))
return v[:-1]+'\0'
确保最后一个字符始终是 a\0
但这也不起作用。
有什么建议么 ?评论 ?提示 ?
谢谢