WXBizDataCrypt.js 968 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // 引入crypto-js库(需要先安装:npm install crypto-js)
  2. import CryptoJS from 'crypto-js';
  3. class WXBizDataCrypt {
  4. constructor(appId, sessionKey) {
  5. this.appId = appId;
  6. this.sessionKey = sessionKey;
  7. }
  8. decryptData(encryptedData, iv) {
  9. try {
  10. // 解密
  11. const key = CryptoJS.enc.Base64.parse(this.sessionKey);
  12. const ivHex = CryptoJS.enc.Base64.parse(iv);
  13. const encryptedHex = CryptoJS.enc.Base64.parse(encryptedData);
  14. const decryptResult = CryptoJS.AES.decrypt(
  15. { ciphertext: encryptedHex },
  16. key,
  17. {
  18. iv: ivHex,
  19. mode: CryptoJS.mode.CBC,
  20. padding: CryptoJS.pad.Pkcs7
  21. }
  22. );
  23. // 将解密结果转换为JSON对象
  24. const decryptedStr = decryptResult.toString(CryptoJS.enc.Utf8);
  25. return JSON.parse(decryptedStr);
  26. } catch (err) {
  27. console.error('解密失败:', err);
  28. return {};
  29. }
  30. }
  31. }
  32. export default WXBizDataCrypt;