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

Posted 被褐怀玉888988

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密的文件代码块,可跨文件调用相关的知识,希望对你有一定的参考价值。

from Crypto.Cipher import AES
import base64
class aescrypt():
    def __init__(self,key,model,iv,encode_):
        self.encode_ = encode_
        self.model =  {'ECB':AES.MODE_ECB,'CBC':AES.MODE_CBC}[model]
        self.key = self.add_32(key)
        self.iv=self.add_16(iv)

        #这里的密钥长度必须是16、24或32,目前16位的就够用了

    def add_16(self,par):
        par = par.encode(self.encode_)
        while len(par) % 16 != 0:
            par += b'\\x00'
        return par

    def add_32(self,par):
        par = par.encode(self.encode_)
        while len(par) % 32 != 0:
            par += b'\\x00'
        return par

    def aesencrypt(self,text):
        text = self.add_16(text)
        if self.model == AES.MODE_ECB:
            aes = AES.new(self.key,self.model) #创建一个aes对象
        elif self.model == AES.MODE_CBC:
            aes = AES.new(self.key,self.model,self.iv) #创建一个aes对象
        self.encrypt_text = aes.encrypt(text)
        return base64.encodebytes(self.encrypt_text).decode().strip()

    def aesdecrypt(self,text):
        text = base64.decodebytes(text.encode(self.encode_))
        if self.model == AES.MODE_ECB:
            aes = AES.new(self.key,self.model) #创建一个aes对象
        elif self.model == AES.MODE_CBC:
            aes = AES.new(self.key,self.model,self.iv) #创建一个aes对象
        self.decrypt_text = aes.decrypt(text)
        return self.decrypt_text.decode(self.encode_).strip('\\0')

以上是关于加密的文件代码块,可跨文件调用的主要内容,如果未能解决你的问题,请参考以下文章

python运用mysql代码块,可跨文件调用

python运用mysql代码块,可跨文件调用

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

ReleaseMutex:从非同步代码块调用对象同步方法

vscode自定义代码块