python解密java加密的数据(DES)
python解密java加密的数据(DES)
java加解密工具是这个:
网上都有的;
python解密:
- 首先安装库: pip install pyDes==2.0.1
- 代码
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位即可)
- 这块代码的局限是包含的中文字符解密不出来,这也是 de.decode("utf-8", 'ignore') 中ignore的目的。因为我做的需求只涉及英文字母和数字,所以没有进一步处理(我觉得应该是编码问题,如果能对的上,应该能正确解密)。
- 以上

浙公网安备 33010602011771号