encryption.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import CryptoJS from 'crypto-js';
  2. const setting = {
  3. encPassword: 'emhpcnVpemh3eQ==' // 数据传输的密钥
  4. };
  5. /**
  6. * AES 加密
  7. * @param {*} src 明文
  8. * @returns 密文
  9. */
  10. export function aesEncrypt(src: string) {
  11. const key = CryptoJS.enc.Utf8.parse(setting.encPassword);
  12. // 加密
  13. var encrypted = CryptoJS.AES.encrypt(src, key, {
  14. iv: key,
  15. mode: CryptoJS.mode.CFB,
  16. padding: CryptoJS.pad.NoPadding
  17. });
  18. return encodeURIComponent(encrypted.toString()); // URL 编码
  19. }
  20. /**
  21. * AES 解密
  22. * @param {*} result 密文
  23. * @param {*} keyWord 密钥
  24. * @returns 明文
  25. */
  26. export function aesDecrypt(result: any) {
  27. const key = CryptoJS.enc.Latin1.parse(setting.encPassword);
  28. var iv = key;
  29. // 解密逻辑
  30. var decryptd = CryptoJS.AES.decrypt(decodeURIComponent(result), key, { // URL 解码
  31. iv: iv,
  32. mode: CryptoJS.mode.CFB,
  33. padding: CryptoJS.pad.NoPadding
  34. });
  35. return decryptd.toString(CryptoJS.enc.Utf8);
  36. }
  37. /**
  38. * Base64 加密
  39. * @param {*} src 明文
  40. * @returns 密文
  41. */
  42. export function base64Encrypt(src: string) {
  43. const encodedWord = CryptoJS.enc.Utf8.parse(src);
  44. return CryptoJS.enc.Base64.stringify(encodedWord);
  45. }