import { HmacCipher } from '../src/utils/cipher/hmac' import { AESCipher } from '../src/utils/cipher/aes' import { getUTCFormatTime } from '../src/utils/time' const aesCipher = new AESCipher() const hmacCipher = new HmacCipher() const OperatorID = '730998640' // Requester ID const secret = { operatorSecret: 'qhtestOS73099864', dataSecret: 'qhtestDS73099864', dataSecretIV: 'qhtestIV73099864', sigSecret: 'qhtestSS73099864', } const data = {} let payload: any = { Data: data, OperatorID: OperatorID, Seq: '1'.padStart(4, '0'), TimeStamp: getUTCFormatTime(), } // Encrypt Data payload.Data = aesCipher.encrypt( JSON.stringify(payload.Data), secret.dataSecret, secret.dataSecretIV ) // Sign Data payload.Sig = hmacCipher.hmacMD5Sign( payload.OperatorID + payload.Data + payload.TimeStamp + payload.Seq, secret.sigSecret ) console.log(JSON.stringify(payload)) const targetUrl = 'https://evtry.qihui.net/evnet/evcs/equipment/v1/query_stations_info' fetch(targetUrl, { body: JSON.stringify(payload), headers: { 'Content-Type': 'application/json', // Authorization: 'Bearer 795E8DD657220BE507A70F912D4D818', Authorization: 'Bearer 795E8DD657220BE507A70F912D4D818A', }, method: 'POST', }).then(async (resp) => { const data = await resp.json() const decryptData = aesCipher.decrypt( data.Data, secret.dataSecret, secret.dataSecretIV // 'secret.dataSecretIV' ) console.log('data:', data) console.log('-'.repeat(33)) console.log('decryptData:', decryptData) // console.log('decryptData:', JSON.parse(decryptData)) // console.log('decryptData:', !!JSON.parse(decryptData)) // // Check Sig // const signature = hmacCipher.hmacMD5Sign( // data.Ret + data.Msg + data.Data, // secret.sigSecret // ) // console.log('signature:', signature) // console.log('Is Sig Valid:', signature === data.Sig) // console.log('-'.repeat(33)) })