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)
    
    

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值