python aes padding_python3 AES.MODE_ECB(128位) pkcs5padding 加密算法

一.错误信息

TypeError("Object type %s cannot be passed to C code" % type(data))

二.代码

class Aes_ECB(object):

def __init__(self,key):

self.key = key

self.MODE = AES.MODE_ECB

self.BS = AES.block_size

self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)

self.unpad = lambda s: s[0:-ord(s[-1])]

# str不是16的倍数那就补足为16的倍数

def add_to_16(value):

while len(value) % 16 != 0:

value += '\0'

return str.encode(value) # 返回bytes

def AES_encrypt(self, text):

aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE) # 初始化加密器

encrypted_text = str(base64.encodebytes(aes.encrypt(Aes_ECB.add_to_16(self.pad(text)))), encoding='utf-8').replace('\n', '') #这个replace大家可以先不用,然后在调试出来的结果中看是否有'\n'换行符

# 执行加密并转码返回bytes

return encrypted_text

# 解密

def AES_decrypt(self, text):

# 初始化加密器

aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE)

# 优先逆向解密base64成bytes

base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8'))

decrypted_text = self.unpad(aes.decrypt(base64_decrypted).decode('utf-8'))

decrypted_code = decrypted_text.rstrip('\0')

return decrypted_code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值