在使用DES做加密处理的时候,需要注意模式和iv之间的关系
如果是用CBC加密模式,需要iv
如果是用EBC加密模式,不需要iv
根据请求搜索username字段并找到加密的地方
通过查看得到key:
经过检验,这个key值是固定值。
方法一、通过js重构加密过程
点进去encryptByDES()方法,找到机密的代码,经过稍微调整后
# 同样需要导入crypto-js
var CryptoJS = require ('crypto-js')
function encryptByDES(t, e) { # t为密码,e为key
var 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/simple
from pyDes import des, CBC, PAD_PKCS5, ECB
import base64
def 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'))