python解密java加密的数据(DES)

python解密java加密的数据(DES)

java加解密工具是这个:

网上都有的;

 

python解密:

  1. 首先安装库: pip install pyDes==2.0.1 
  2. 代码
     1 import base64
     2 from pyDes import des, PAD_PKCS5, ECB
     3 
     4 
     5 class DesUtil(object):
     6     def __init__(self, mode=ECB, padmode=PAD_PKCS5, key=None, iv=None):
     7         self.padmode = padmode
     8         self.k = des(key, mode, iv, pad=None, padmode=padmode)
     9 
    10     def encrypt(self, content):
    11         if not isinstance(content, str):
    12             content = str(content)
    13         en = self.k.encrypt(content.encode("utf-8"), padmode=self.padmode)
    14         return base64.b64encode(en)
    15 
    16     def descrypy(self, content):
    17         de = self.k.decrypt(base64.b64decode(content), padmode=self.padmode)
    18         print("de:", de)
    19         return de.decode("utf-8", 'ignore')
    20 
    21 
    22 if __name__ == "__main__":
    23     read_to_descrypy = "sfasdfsdgsjgsjg"
    24     key = "xxx"
    25     des_util = DesUtil(key=key, iv=key)
    26 
    27     str_de = des_util.descrypy(read_to_descrypy)
    28     # print("加密结果", str_en)
    29     print("解密结果", str_de)
    30     print("str_de:", type(str_de))
    31     print("str_de:", type(eval(str_de)))
    32     print("str_de:", eval(str_de))

    其中read_to_descrypy是需要解密的字符串;key是秘钥(注意如果超过8位,务必截取前8位即可)

  3. 这块代码的局限是包含的中文字符解密不出来,这也是 de.decode("utf-8", 'ignore') 中ignore的目的。因为我做的需求只涉及英文字母和数字,所以没有进一步处理(我觉得应该是编码问题,如果能对的上,应该能正确解密)。
  4. 以上
posted @ 2020-08-19 19:29  东隅已逝桑榆非晚  阅读(769)  评论(0)    收藏  举报