[Python ] 3des 加密解密

from Crypto.Cipher import DES3 
import codecs
import base64

class EncryptDate:
    def __init__(self, key):
        self.key = key  # 初始化密钥
        self.length = DES3.block_size  # 初始化数据块大小
        self.aes = DES3.new(self.key, DES3.MODE_CBC, b'12345678')  # 初始化AES,ECB模式的实例
        # 截断函数,去除填充的字符
        self.unpad = lambda date: date[0:-ord(date[-1])]      

    def pad(self, text):
        """
        #填充函数,使被加密数据的字节码长度是block_size的整数倍 
        """
        count = len(text.encode('utf-8'))
        add = self.length - (count % self.length)
        entext = text + (chr(add) * add)
        return entext

    def encrypt(self, encrData):  # 加密函数
        res = self.aes.encrypt(self.pad(encrData).encode("utf8"))
        # msg = str(base64.b64encode(res), encoding="utf8")
        msg =  res.hex()
        return msg

    def decrypt(self, decrData):  # 解密函数
        # res = base64.decodebytes(decrData.encode("utf8"))
        res = bytes.fromhex(decrData)
        msg = self.aes.decrypt(res).decode("utf8")
        return self.unpad(msg)


eg = EncryptDate("tjjtgjzs########")  # 这里密钥的长度必须是16的倍数
res = eg.encrypt("zhangs")
print(res)
eg1 = EncryptDate("tjjtgjzs########") 
print(eg1.decrypt(res))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. ASCII 编码 ASCII(American Standard Code for Information ...
    s酸菜阅读 12,790评论 0 8
  • 目录一、对称加密 1、对称加密是什么 2、对称加密的优点 3、对称加密的问题 4、对称加密的应用场景 5、对称加密...
    意一ineyee阅读 62,374评论 8 110
  • 说明 针对上行参数 value,做加密处理,基本思路每个项目拥有有不同的私钥因子(通过定义后台配置),最终的私钥=...
    SuperGu阅读 3,153评论 0 0
  • 彼尚老师分享[爱心]关于整个2016大事分享及如何做: 2016年是非常特殊的一年,地球能量正在飞速提升。 我们现...
    axjl如意阅读 962评论 0 0
  • 开始下达指令 一行指令中第一个输入的部分绝对是 指令(command) 或 可执行文件案command 为指令的名...
    醉疯觞阅读 3,483评论 0 0