encrypt_query_station_info.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { HmacCipher } from '../src/utils/cipher/hmac'
  2. import { AESCipher } from '../src/utils/cipher/aes'
  3. import { getUTCFormatTime } from '../src/utils/time'
  4. const aesCipher = new AESCipher()
  5. const hmacCipher = new HmacCipher()
  6. const OperatorID = '730998640' // Requester ID
  7. const secret = {
  8. operatorSecret: 'qhtestOS73099864',
  9. dataSecret: 'qhtestDS73099864',
  10. dataSecretIV: 'qhtestIV73099864',
  11. sigSecret: 'qhtestSS73099864',
  12. }
  13. const data = {}
  14. let payload: any = {
  15. Data: data,
  16. OperatorID: OperatorID,
  17. Seq: '1'.padStart(4, '0'),
  18. TimeStamp: getUTCFormatTime(),
  19. }
  20. // Encrypt Data
  21. payload.Data = aesCipher.encrypt(
  22. JSON.stringify(payload.Data),
  23. secret.dataSecret,
  24. secret.dataSecretIV
  25. )
  26. // Sign Data
  27. payload.Sig = hmacCipher.hmacMD5Sign(
  28. payload.OperatorID + payload.Data + payload.TimeStamp + payload.Seq,
  29. secret.sigSecret
  30. )
  31. console.log(JSON.stringify(payload))
  32. const targetUrl =
  33. 'https://evtry.qihui.net/evnet/evcs/equipment/v1/query_stations_info'
  34. fetch(targetUrl, {
  35. body: JSON.stringify(payload),
  36. headers: {
  37. 'Content-Type': 'application/json',
  38. // Authorization: 'Bearer 795E8DD657220BE507A70F912D4D818',
  39. Authorization: 'Bearer 795E8DD657220BE507A70F912D4D818A',
  40. },
  41. method: 'POST',
  42. }).then(async (resp) => {
  43. const data = await resp.json()
  44. const decryptData = aesCipher.decrypt(
  45. data.Data,
  46. secret.dataSecret,
  47. secret.dataSecretIV
  48. // 'secret.dataSecretIV'
  49. )
  50. console.log('data:', data)
  51. console.log('-'.repeat(33))
  52. console.log('decryptData:', decryptData)
  53. // console.log('decryptData:', JSON.parse(decryptData))
  54. // console.log('decryptData:', !!JSON.parse(decryptData))
  55. // // Check Sig
  56. // const signature = hmacCipher.hmacMD5Sign(
  57. // data.Ret + data.Msg + data.Data,
  58. // secret.sigSecret
  59. // )
  60. // console.log('signature:', signature)
  61. // console.log('Is Sig Valid:', signature === data.Sig)
  62. // console.log('-'.repeat(33))
  63. })