网址:https://cj.eloancn.com/user/login?service=https%3A%2F%2Fcj.eloancn.com%2Fpcgway%2Fapp001%2Fv1%2F02%3Fret%3DaHR0cHM6Ly9jai5lbG9hbmNuLmNvbQ%3D%3D&v=1655385829924

  1. 在使用DES做加密处理的时候,需要注意模式和iv之间的关系
  2. 如果是用CBC加密模式,需要iv
  3. 如果是用EBC加密模式,不需要iv

根据请求搜索username字段并找到加密的地方
image.png
通过查看得到key:
image.png
经过检验,这个key值是固定值。

方法一、通过js重构加密过程

  1. 点进去encryptByDES()方法,找到机密的代码,经过稍微调整后
  2. # 同样需要导入crypto-js
  3. var CryptoJS = require ('crypto-js')
  4. function encryptByDES(t, e) { # t为密码,e为key
  5. var a = CryptoJS.enc.Utf8.parse(e);
  6. try {
  7. var s = CryptoJS.DES.encrypt(String(t), a, {
  8. mode: CryptoJS.mode.ECB, # 这里使用的ECB加密模式
  9. padding: CryptoJS.pad.Pkcs7
  10. })
  11. } catch (t) {
  12. console.log(t)
  13. }
  14. return s.toString()
  15. }
  16. key = 'e9284d45-cf2a-4e46-9367-f122413ca6b0'
  17. pwd = '123456'
  18. console.log(encryptByDES(pwd,key))

方法二、通过python重构加密过程

  1. # 需要安装pyDes:
  2. #pip install pyDes -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. from pyDes import des, CBC, PAD_PKCS5, ECB
  4. import base64
  5. def des_encrypt(password, key, iv='', model='CBC'):
  6. '''
  7. DES加密
  8. :param password: 密码明文
  9. :param key: 密钥
  10. :param iv: 秘钥偏移量
  11. :param model: 加密模式 CBC ECB
  12. :return: 加密之后的数据
  13. '''
  14. # 创建des对象
  15. if model == 'CBC':
  16. # PAD_PKCS5 为填充方式
  17. des_obj = des(key[:8].encode('utf-8'), CBC, iv.encode('utf-8'), padmode=PAD_PKCS5)
  18. else:
  19. # ECB加密模式 不需要iv秘钥偏移量
  20. des_obj = des(key[:8].encode('utf-8'), ECB, padmode=PAD_PKCS5)
  21. # 通过des对象处理数据
  22. encrypt_content = des_obj.encrypt(password.encode('utf-8'))
  23. result = base64.b64encode(encrypt_content).decode()
  24. return result
  25. #print(des_encrypt('123456', 'e9284d45-cf2a-4e46-9367-f122413ca6b0', '', 'ECB'))