utils_AES.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. AES加解密
  5. """
  6. import base64
  7. from Crypto.Cipher import AES
  8. class EncryptDate:
  9. def __init__(self, key):
  10. self.key = key # 初始化密钥
  11. self.length = AES.block_size # 初始化数据块大小
  12. self.aes = AES.new(self.key, AES.MODE_ECB) # 初始化AES,ECB模式的实例
  13. # 截断函数,去除填充的字符
  14. self.unpad = lambda date: date[0:-ord(date[-1])]
  15. def pad(self, text):
  16. """
  17. #填充函数,使被加密数据的字节码长度是block_size的整数倍
  18. """
  19. count = len(text.encode('utf-8'))
  20. add = self.length - (count % self.length)
  21. entext = text + (chr(add) * add)
  22. return entext
  23. def encrypt(self, encrData): # 加密函数
  24. res = self.aes.encrypt(self.pad(encrData).encode("utf8"))
  25. msg = str(base64.b64encode(res))
  26. return msg
  27. def decrypt(self, decrData): # 解密函数
  28. res = base64.decodestring(decrData.encode("utf8"))
  29. try:
  30. msg = self.aes.decrypt(res).decode("utf8")
  31. return self.unpad(msg)
  32. except Exception,e:
  33. return None