common/aes_cypher.py
import base64
from Crypto.Cipher import AES
from Crypto import Random
class AESCipher:
def __init__(self, key):
self.key = key
self.BS = 16
def pad(self, s):
return s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
def unpad(self, s):
return s[:-ord(s[len(s)-1:])]
def encrypt(self, raw):
raw = self.pad(raw)
iv = Random.new().read(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return base64.b64encode(iv + cipher.encrypt(raw))
def decrypt(self, enc):
enc = base64.b64decode(enc)
iv = enc[:16]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return self.unpad(cipher.decrypt(enc[16:]))