我有一个问题如何加密zip类型的压缩blob。由于某些原因我不能使用chilkat模块,zipfile模块只提供解密,因此我不知道用密钥加密拉链的内容。
你能否告诉我一些关于这个问题是如何解决的建议?
理想的解决方案看起来像这样:
blob_info = blobstore.BlobInfo.all()[0] #lets say we want to read the first blob we find
blob_reader = blobstore.BlobReader(blob_info.key())
file = zipfile.ZipFile(blob_reader, 'r')
data = file.read(file.namelist()[0])
output = StringIO.StringIO()
outfile = zipfile.ZipFile(output, "w")
outfile.writestr(file.namelist()[0], data)
outfile.setpassword('testpass') #it would be nice if there was a module that could set pass like this, .setpassword() only works with decryption
outfile.close()
outputStream = files.blobstore.create(mime_type='application/zip', _blobinfo_uploaded_filename = file.namelist()[0].split('.')[0] + '.zip')
with files.open(outputStream, 'a') as f:
f.write(output.getvalue())
files.finalize(outputStream)
答案 0 :(得分:1)
首先,请允许我说zip加密很弱且过时。如果您需要强大的安全性,则不应该依赖它。许多论文都证明了这一点(谷歌表示最受欢迎的是“Eli Biham和Paul C. Kocher对PKZIP Stream Cipher的已知明文攻击”。
其次,GAE仅适用于纯Python的库。可能你不能使用chilkat,因为它是一个C库。
第三,纯python中的zip文件加密/解密会变得很慢,可能你会遇到GAE的CPU问题......
也许你应该考虑另一种方法来做到这一点?
此致