python 实现 DES CBC模式加解密

匿名 (未验证) 提交于 2019-12-02 22:51:30

# -*- coding=utf-8-*- from Crypto.Cipher import DES import base64 """ des cbc加密算法 padding : PKCS5 """ class DESUtil:     __BLOCK_SIZE_8 = BLOCK_SIZE_8 = DES.block_size     __IV = "\0\0\0\0\0\0\0\0" # __IV = chr(0)*8     @staticmethod     def encryt(str, key):         cipher = DES.new(key, DES.MODE_CBC, DESUtil.__IV)         x = DESUtil.__BLOCK_SIZE_8 - (len(str) % DESUtil.__BLOCK_SIZE_8)         if x != 0:             str = str + chr(x)*x         msg = cipher.encrypt(str)         # msg = base64.urlsafe_b64encode(msg).replace('=', '')         msg = base64.b64encode(msg)         return msg     @staticmethod     def decrypt(enStr, key):         cipher = DES.new(key, DES.MODE_CBC,DESUtil.__IV)         # enStr += (len(enStr) % 4)*"="         # decryptByts = base64.urlsafe_b64decode(enStr)         decryptByts = base64.b64decode(enStr)         msg = cipher.decrypt(decryptByts)         paddingLen = ord(msg[len(msg)-1])         return msg[0:-paddingLen] if __name__ == "__main__":     key = "12345678"     res = DESUtil.encryt("123456", key)     print res # ED5wLgc3Mnw=     print DESUtil.decrypt(res, key)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!