12345678910111213141516171819202122232425262728293031323334353637 |
- // 引入crypto-js库(需要先安装:npm install crypto-js)
- import CryptoJS from 'crypto-js';
- class WXBizDataCrypt {
- constructor(appId, sessionKey) {
- this.appId = appId;
- this.sessionKey = sessionKey;
- }
- decryptData(encryptedData, iv) {
- try {
- // 解密
- const key = CryptoJS.enc.Base64.parse(this.sessionKey);
- const ivHex = CryptoJS.enc.Base64.parse(iv);
- const encryptedHex = CryptoJS.enc.Base64.parse(encryptedData);
- const decryptResult = CryptoJS.AES.decrypt(
- { ciphertext: encryptedHex },
- key,
- {
- iv: ivHex,
- mode: CryptoJS.mode.CBC,
- padding: CryptoJS.pad.Pkcs7
- }
- );
- // 将解密结果转换为JSON对象
- const decryptedStr = decryptResult.toString(CryptoJS.enc.Utf8);
- return JSON.parse(decryptedStr);
- } catch (err) {
- console.error('解密失败:', err);
- return {};
- }
- }
- }
- export default WXBizDataCrypt;
|