python3 AES.MODE_ECB(128位) pkcs5padding 加密算法

Posted 莫贞俊晗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 += ''
    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('
', '')     #这个replace大家可以先不用,然后在调试出来的结果中看是否有'
'换行符
    # 执行加密并转码返回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('')
    return decrypted_code

以上是关于python3 AES.MODE_ECB(128位) pkcs5padding 加密算法的主要内容,如果未能解决你的问题,请参考以下文章

from Crypto.Cipher import AES加密解密

加密的文件代码块,可跨文件调用

python加密的文件代码块,可跨文件调用

Python3-随笔目录

python3多进程实战(python3经典编程案例)

python3多进程实战(python3经典编程案例)