#coding=utf-8
import hashlib
from Crypto.Cipher import AES
import base64
class AesCrypter(object):
def __init__(self, key):
# self.key = hashlib.sha256(key).digest()
# self.iv = self.key[:16]
# key是16个字节,也就是128位 16*8
# key可以是16*8=128, 24*8=192, 32*8=256位
self.key = self.iv = key
def encrypt(self, data):
data = self.pkcs7padding(data)
cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
encrypted = cipher.encrypt(data)
return base64.b64encode(encrypted)
def decrypt(self, data):
data = base64.b64decode(data)
cipher = AES.new(self.key, AES.MODE_CBC, self.iv)
decrypted = cipher.decrypt(data)
decrypted = self.pkcs7unpadding(decrypted)
return decrypted
def pkcs7padding(self, data):
#AES.block_size 16位
bs = AES.block_size
padding = bs - len(data) % bs
padding_text = chr(padding) * padding
return data + padding_text
def pkcs7unpadding(self, data):
lengt = len(data)
unpadding = ord(data[lengt - 1])
return data[0:lengt-unpadding]
if __name__ == '__main__':
aes = AesCrypter('UITN25LMUQC436IM')
#原文必须是blocksize的整数倍
encrypted = aes.encrypt('2633930920939309999333333')
print encrypted
plain = aes.decrypt(encrypted)
print plain