Changeset 319 for trunk/sandbox/jhb/oc2/storage.py
- Timestamp:
- 05/23/09 02:06:34 (3 years ago)
- Files:
-
- 1 modified
-
trunk/sandbox/jhb/oc2/storage.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/sandbox/jhb/oc2/storage.py
r318 r319 1 import UserDict, cPickle, blowfish, random, os, base64 1 import UserDict, cPickle, blowfish, random, os, base64, zlib 2 2 class Storage(UserDict.UserDict): 3 3 … … 17 17 return self 18 18 19 class EmptyStorage(Storage): 20 def save(self): 21 pass 22 def restore(self): 23 pass 24 25 19 26 class CryptedStorage(Storage): 20 27 … … 23 30 def setPassword(self,password): 24 31 self.password = password 25 32 return self 26 33 27 34 def decrypt(self,password,salt,text): … … 39 46 40 47 def save(self): 41 data = 'opencoin'+base64.b64encode(cPickle.dumps(self.data)) 48 #data = 'opencoin'+base64.b64encode(cPickle.dumps(self.data)) 49 data = 'opencoin'+zlib.compress(cPickle.dumps(self.data),9) 42 50 salt = ''.join([str(random.randint(0,9)) for i in range(0,16)]) 43 51 crypted = self.encrypt(self.password,salt,data) 44 content = '%s%s%s' % (self.prefix,salt,base64.b64encode(crypted)) 52 #content = '%s%s%s' % (self.prefix,salt,base64.b64encode(crypted)) 53 content = '%s%s%s' % (self.prefix,salt,crypted) 45 54 open(self.filename,'w').write(content) 46 55 return self … … 52 61 if content.startswith(self.prefix): 53 62 salt = content[4:20] 54 crypted = base64.b64decode(content[20:]) 63 #crypted = base64.b64decode(content[20:]) 64 crypted = content[20:] 55 65 data = self.decrypt(self.password, salt, crypted) 56 66 if data.startswith('opencoin'): 57 data = data[8:]67 data = zlib.decompress(data[8:]) 58 68 else: 59 raise 'wrong password'60 data = base64.b64decode(data)69 raise Exception, 'wrong password' 70 #data = base64.b64decode(data) 61 71 else: 62 72 data = content
