我想将xOr操作应用于大量文件,其中一些文件非常大。
基本上我得到一个文件,并按字节逐字逐句(或至少这是我认为我在做什么)。当它碰到一个更大的文件时(大约70MB),我得到一个内存不足的错误,我的脚本崩溃了。
我的电脑有16GB的Ram,有超过50%的可用空间,所以我不会把它和我的硬件联系起来。xor-python中的大文件
def xor3(source_file, target_file):
b = bytearray(open(source_file, 'rb').read())
for i in range(len(b)):
b[i] ^= 0x71
open(target_file, 'wb').write(b)
我试图读取数据块文件,但似乎我对这个太unexperimented作为输出是不希望的一个。第一个函数返回当然:)
def xor(data):
b = bytearray(data)
for i in range(len(b)):
b[i] ^= 0x41
return data
def xor4(source_file, target_file):
with open(source_file,'rb') as ifile:
with open(target_file, 'w+b') as ofile:
data = ifile.read(1024*1024)
while data:
ofile.write(xor(data))
data = ifile.read(1024*1024)
什么是这种操作的此时,相应的解决方案我想要什么,?我做错了什么?
什么是文件 –
的内容在的功能之一,你在使用'0x71'异或其他与'0x41'。这是你的预期吗?显然这改变了结果... – Bakuriu
@Bakuriu我只是在不同的密钥文件上试用它。 –