Python:AES加解密

系统 1876 0
            
              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)
            
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论