Python 基于AES和base64的加密小记

初衷是对工具使用有一个过期限定,研究采用AES和Base64加密方法,借用key对加密内容进行加密,解密时采用统一的key进行解密即可。

mport base64
from Crypto.Cipher import AES

class encipherment():

    def __init__(self):
        self.aes_key = '我是十六位的key'
        self.base64_key = '自定义key'


    # 需要补位,str不是16的倍数那就补足为16的倍数
    def add_to_16(self,value):
        '''
         AES对称加密算法
         '''
        while len(value) % 16 != 0:
            value += '\0'
        return str.encode(value)  # 返回bytes
    # AES加密方法
    def aes_encrypt(self, text):
        aes = AES.new(self.add_to_16(self.aes_key), AES.MODE_ECB)  # 初始化加密器
        encrypt_aes = aes.encrypt(self.add_to_16(text))  # 先进行aes加密
        encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 执行加密并转码返回bytes
        return encrypted_text

    # AES解密方法
    def aes_decrypt(self, text):
        aes = AES.new(self.add_to_16(self.aes_key), AES.MODE_ECB)  # 初始化加密器
        text = str(text, encoding="utf-8")  #byte 转str
        base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))  # 优先逆向解密base64成bytes
        decrypted_text = str(aes.decrypt(base64_decrypted), encoding='utf-8').replace('\0', '')  # 执行解密密并转码返回str
        return decrypted_text


    def base64_encrypt(self,aes_v):
        '''
        base64 加密,并通过key进行再处理防止解密
        :param aes_v:
        :return:
        '''
        aes_v = aes_v.encode('utf-8')
        base64_v= base64.b64encode(aes_v) #BASE64加密
        base64_str = str(base64_v, encoding="utf-8")
        bs64_list = list(base64_str)
        for inx, val in enumerate(list(self.base64_key)):
            bs64_list.insert((inx+1)*2, val)#根据key值添加字符串
        base64_encrypt_v = ''.join(bs64_list)
        return base64_encrypt_v

    def bse64_decrypt(self,base64_en_v):
        '''
        base64解密,先处理回原始的加密报文,再进行解密
        :param base64_encrypt_str:
        :return:
        '''
        try:
            i = 0
            base64_encrypt_list = list(base64_en_v)
            while len(self.base64_key) - i:
                inx = (len(self.base64_key) - i) * 2
                base64_encrypt_list.pop(inx)  # 删除添加的字符
                i = i + 1
            base64_encrypt_str_tmp = ''.join(base64_encrypt_list)
            debs64_decrypt_v = base64.b64decode(base64_encrypt_str_tmp)
            return debs64_decrypt_v
            # print(debs64_decrypt_v)
        except Exception as e:
            print(e)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值