2011-09-15 5 views
1

zip 형식의 압축 된 blob을 암호화하는 방법에 문제가 있습니다. chilkat 모듈을 사용할 수없는 몇 가지 이유 때문에 zipfile 모듈은 암호 해독 만 제공하므로 키를 사용하여 zip을 암호화하는 방법을 알지 못합니다.앱 엔진 BLOBSTORE에서 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

첫째 :

이상적인 솔루션은 다음과 같이 보일 것입니다. 강력한 보안이 필요한 경우에는 신뢰하지 않아야합니다. 이것은 많은 논문에서 입증되었습니다 (구글은 Eli Biham과 Paul C. Kocher가 "PKZIP Stream Cipher에 대한 알려진 일반 텍스트 공격"이라고 말합니다).

둘째, GAE는 순수 파이썬 라이브러리에서만 작동합니다. 아마도 C 라이브러리이기 때문에 chilkat을 사용할 수 없습니다.

셋째,

은 아마 당신은이 작업을 수행하는 또 다른 방법으로 찾아야한다 ... 순수 파이썬에서 zip 파일 암호화/복호화 지옥 느린 될 것입니다, 아마 당신은 GAE와 CPU에 문제가 있습니다?

감사합니다.

+0

첫 번째 지점에서 귀하와 동의하십시오. chilkat에 관해서 또 다른 이야기 다. .. 그러나 나는 이것이 많은 시간이 걸릴 것이다라는 것을 알고있다. 또 다른 옵션은 각 파일을 개별적으로 암호화하는 것입니다.하지만 사용자가 zip 내에서 동일한 파일 유형을 제공하는지 확신 할 수 없습니다. 도움을 주셔서 감사합니다. – Peter

+0

@Peter : 암호화 된 파일을 압축하면 파일이 제대로 압축되지 않으므로 많이 사용하지 않을 가능성이 높습니다. 모든 파일을 하나의 Zip 파일로 압축 한 다음 별도로 암호화하는 것이 훨씬 좋습니다. – rossum

+0

@Peter 아마 당신이 달성하려는 것을 우리에게 말해 준다면, 우리는 접근을 제안 할 수 있습니다. –