Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. #!python3
  2. import base64
  3. import hashlib
  4. from Crypto.Cipher import AES
  5. from Crypto import Random
  6.  
  7.  
  8. class AESCipher(object):
  9.  
  10. def __init__(self, key):
  11. self.bs = 32
  12. self.key = hashlib.sha256(key.encode()).digest()
  13.  
  14. def encrypt(self, raw):
  15. raw = self._pad(raw)
  16. iv = Random.new().read(AES.block_size)
  17. cipher = AES.new(self.key, AES.MODE_CBC, iv)
  18. return base64.b64encode(iv + cipher.encrypt(raw))
  19.  
  20. def decrypt(self, enc):
  21. enc = base64.b64decode(enc)
  22. iv = enc[:AES.block_size]
  23. cipher = AES.new(self.key, AES.MODE_CBC, iv)
  24. return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8')
  25.  
  26. def _pad(self, s):
  27. return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
  28.  
  29. @staticmethod
  30. def _unpad(s):
  31. return s[:-ord(s[len(s) - 1:])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement