1234567891011121314151617181920212223242526272829303132333435363738 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- """
- AES加解密
- """
- import base64
- from Crypto.Cipher import AES
- class EncryptDate:
- def __init__(self, key):
- self.key = key # 初始化密钥
- self.length = AES.block_size # 初始化数据块大小
- self.aes = AES.new(self.key, AES.MODE_ECB) # 初始化AES,ECB模式的实例
- # 截断函数,去除填充的字符
- self.unpad = lambda date: date[0:-ord(date[-1])]
- def pad(self, text):
- """
- #填充函数,使被加密数据的字节码长度是block_size的整数倍
- """
- count = len(text.encode('utf-8'))
- add = self.length - (count % self.length)
- entext = text + (chr(add) * add)
- return entext
- def encrypt(self, encrData): # 加密函数
- res = self.aes.encrypt(self.pad(encrData).encode("utf8"))
- msg = str(base64.b64encode(res))
- return msg
- def decrypt(self, decrData): # 解密函数
- res = base64.decodestring(decrData.encode("utf8"))
- try:
- msg = self.aes.decrypt(res).decode("utf8")
- return self.unpad(msg)
- except Exception,e:
- return None
|