Как зашифровать zip-файл в магазине приложений. - PullRequest
1 голос
/ 15 сентября 2011

У меня проблема с шифрованием сжатых BLOB-объектов типа zip. По некоторым причинам я не могу использовать модуль chilkat, модуль zipfile обеспечивает только расшифровку, поэтому я не знаю, что использовать для шифрования zip-ключей ключом.

Не могли бы вы дать мне несколько советов, как эта проблема (может быть) решена?

идеальное решение будет выглядеть примерно так:

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)

1 Ответ

1 голос
/ 15 сентября 2011

Прежде всего, позвольте мне сказать, что zip-шифрование слабо и устарело.Вы не должны полагаться на это, если вам нужна сильная безопасность.Это доказано во многих статьях (Google утверждает, что наиболее популярной является «Известная атака открытого текста на потоковом шифре PKZIP» Эли Бихама и Пола К. Кохера).

Во-вторых, GAE работает только с библиотеками, которыечистый питон.Вероятно, вы не можете использовать chilkat, потому что это библиотека C.

В-третьих, шифрование / дешифрование zip-файлов в чистом python будет чертовски медленным, и, вероятно, у вас будут проблемы с процессором в GAE ...

Возможно, вам стоит поискать другой способ сделать это?

С уважением

...