Python:AES加解密

from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
 
 
class AES_enc():
    def __init__(self, key, iv):
        self.block_size = AES.block_size  #设置block_size的大小为16字节,也就是128位
        self.key = key
        self.iv = iv
        self.mode = AES.MODE_CBC     #采用CBC模式
        #加密时自动补全16位,填充内容是“16-len(s)”对应的ascii字符
        self.padding_chr = lambda s: s + (self.block_size - len(s) % self.block_size) * chr(self.block_size - len(s) % self.block_size)
        #解密时反向剪裁补充字符
        self.unpadding_chr = lambda s: s[0:-ord(s[-1])]
 
    #加密
    def encrypt(self, text):
        cryptor = AES.new(self.key, self.mode, self.iv)
        text = self.padding_chr(text)
        ciphertext = cryptor.encrypt(text)
        #把加密后的字符串转化为16进制字符串 ,也可以转换为base64加密的内容,使用b2a_base64(ciphertext)或者base64.urlsafe_b64decode(ciphertext)
        return b2a_hex(ciphertext).decode("utf-8")
 
    # 解密
    def decrypt(self, text):
        cryptor = AES.new(self.key, self.mode, self.iv)
        plain_text = cryptor.decrypt(a2b_hex(text)).decode("utf-8")
        return self.unpadding_chr(plain_text)

 

你可能感兴趣的:(Python基础知识)