需要安装库:
pip install crypto
pip install pycrypto
# coding: utf8
import sys
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class AESCrypto:
def __init__(self, key, ivec):
self.key = key
self.mode = AES.MODE_CBC
self.ivec = ivec
self.encrypt_text = ""
self.decrypt_text = ""
self.block_size = AES.block_size
def pad(self, text):
pad_len = self.block_size - len(text) % self.block_size
return text + pad_len * chr(pad_len)
def unpad(self, text):
pad_len = ord(text[len(text) - 1])
return text[:-pad_len]
def encrypt(self, text):
block_size = AES.block_size
length = len(text)
if length % block_size != 0:
padding = block_size - (length % block_size)
text = text + chr(0) * padding
cryptor = AES.new(self.key, self.mode, self.ivec)
self.encrypt_text = cryptor.encrypt(text)
return b2a_hex(self.encrypt_text)
def decrypt(self, text):
cryptor = AES.new(self.key, self.mode, self.ivec)
self.decrypt_text = cryptor.decrypt(a2b_hex(text))
return self.decrypt_text.rstrip("\0")
if __name__ == "__main__":
key = "q*yu37@tn#6~KnC!"
ivec = chr(0)*16
aes_crypto = AESCrypto(key, ivec)
text = "hello JavaWeb学习总结"
text = aes_crypto.pad(text)
encrypt_text = aes_crypto.encrypt(text)
print encrypt_text
decrypt_text = aes_crypto.decrypt(encrypt_text)
decrypt_text = aes_crypto.unpad(decrypt_text)
print decrypt_text
运行结果:
4823c258e984f54c384804d898ce6b254f69b31532215cc4f9bd13c87d3aacf4
hello JavaWeb学习总结
Process finished with exit code 0