python对文件加密解密模块

  • 安装Crypto:pip3 install pycryptodome
  • 封装一个可用的模块
  • #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    from Crypto.Cipher import AES
    import hashlib
    
    class Aescrypt():
        def __init__(self, key, model=AES.MODE_CBC, iv='1234567812345678'):
            self.key = self.Add16(key)
            self.model = model
            self.iv = iv.encode()
    
        def Add16(self, par):
            if type(par) == str:
                par = par.encode()
            while len(par) % 16 != 0:
                par += b'\x00'
            return par
    
        def AesEncrypt(self, text):
            text = self.Add16(text)
            if self.model == AES.MODE_CBC:
                self.aes = AES.new(self.key, self.model, self.iv)
            elif self.model == AES.MODE_ECB:
                self.aes = AES.new(self.key, self.model)
            self.encrypt_text = self.aes.encrypt(text)
            return self.encrypt_text
    
        def AesDecrypt(self, text):
            if self.model == AES.MODE_CBC:
                self.aes = AES.new(self.key, self.model, self.iv)
            elif self.model == AES.MODE_ECB:
                self.aes = AES.new(self.key, self.model)
            self.decrypt_text = self.aes.decrypt(text)
            self.decrypt_text = self.decrypt_text.strip(b"\x00")
            return self.decrypt_text
        
        def HashMsg(self, msg):
            sha256 = hashlib.sha256()
            sha256.update(msg.encode('utf-8'))
            res = sha256.hexdigest()
            return res
    
    if __name__ == '__main__':
        passwd = "123456781234567"
        iv = '1234567812345678'
        aescryptor = Aescrypt(passwd, AES.MODE_CBC, iv) # CBC模式
        # aescryptor = Aescrypt(passwd, AES.MODE_ECB, "") # ECB模式
        text = "好好学习"
        en_text = aescryptor.AesEncrypt(text)
        print("密文:", en_text)
        text = aescryptor.AesDecrypt(en_text)
        text = str(text, encoding='utf-8')
        print("明文:", text)
    
    

     

你可能感兴趣的:(Python相关博文,crypto,AES,加密,解密)