在使用DES做加密处理的时候,需要注意模式和iv之间的关系如果是用CBC加密模式,需要iv如果是用EBC加密模式,不需要iv
根据请求搜索username字段并找到加密的地方
通过查看得到key:
经过检验,这个key值是固定值。
方法一、通过js重构加密过程
点进去encryptByDES()方法,找到机密的代码,经过稍微调整后# 同样需要导入crypto-jsvar CryptoJS = require ('crypto-js')function encryptByDES(t, e) { # t为密码,e为keyvar a = CryptoJS.enc.Utf8.parse(e);try {var s = CryptoJS.DES.encrypt(String(t), a, {mode: CryptoJS.mode.ECB, # 这里使用的ECB加密模式padding: CryptoJS.pad.Pkcs7})} catch (t) {console.log(t)}return s.toString()}key = 'e9284d45-cf2a-4e46-9367-f122413ca6b0'pwd = '123456'console.log(encryptByDES(pwd,key))
方法二、通过python重构加密过程
# 需要安装pyDes:#pip install pyDes -i https://pypi.tuna.tsinghua.edu.cn/simplefrom pyDes import des, CBC, PAD_PKCS5, ECBimport base64def des_encrypt(password, key, iv='', model='CBC'):'''DES加密:param password: 密码明文:param key: 密钥:param iv: 秘钥偏移量:param model: 加密模式 CBC ECB:return: 加密之后的数据'''# 创建des对象if model == 'CBC':# PAD_PKCS5 为填充方式des_obj = des(key[:8].encode('utf-8'), CBC, iv.encode('utf-8'), padmode=PAD_PKCS5)else:# ECB加密模式 不需要iv秘钥偏移量des_obj = des(key[:8].encode('utf-8'), ECB, padmode=PAD_PKCS5)# 通过des对象处理数据encrypt_content = des_obj.encrypt(password.encode('utf-8'))result = base64.b64encode(encrypt_content).decode()return result#print(des_encrypt('123456', 'e9284d45-cf2a-4e46-9367-f122413ca6b0', '', 'ECB'))
