Newer
Older
KaiFengPC / src / utils / AES.js
@zhangdeliang zhangdeliang on 23 May 1 KB 初始化项目
  1. import CryptoJS from "crypto-js";
  2.  
  3. // 默认的 KEY 与 iv 如果没有给
  4. const KEY = CryptoJS.enc.Utf8.parse("7A57A5B723894B84"); //十六位十六进制数作为密钥
  5. const IV = CryptoJS.enc.Utf8.parse("360DA3SE68A47895"); //十六位十六进制数作为密钥
  6.  
  7. /**
  8. * AES加密 :字符串 key iv 返回base64
  9. */
  10. export function EncryptAES(word, keyStr, ivStr) {
  11. let key = KEY;
  12. let iv = IV;
  13. if (keyStr) {
  14. key = CryptoJS.enc.Utf8.parse(keyStr);
  15. iv = CryptoJS.enc.Utf8.parse(ivStr);
  16. }
  17. let srcs = CryptoJS.enc.Utf8.parse(word);
  18. var encrypted = CryptoJS.AES.encrypt(srcs, key, {
  19. iv: iv,
  20. mode: CryptoJS.mode.CBC,
  21. padding: CryptoJS.pad.ZeroPadding,
  22. });
  23. return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
  24. }
  25.  
  26. /**
  27. * AES 解密 :字符串 key iv 返回base64
  28. *
  29. * @return {string}
  30. */
  31. export function DecryptAES(word, keyStr, ivStr) {
  32. let key = KEY;
  33. let iv = IV;
  34.  
  35. if (keyStr) {
  36. key = CryptoJS.enc.Utf8.parse(keyStr);
  37. iv = CryptoJS.enc.Utf8.parse(ivStr);
  38. }
  39.  
  40. let base64 = CryptoJS.enc.Base64.parse(word);
  41. let src = CryptoJS.enc.Base64.stringify(base64);
  42.  
  43. let decrypt = CryptoJS.AES.decrypt(src, key, {
  44. iv: iv,
  45. mode: CryptoJS.mode.CBC,
  46. padding: CryptoJS.pad.ZeroPadding,
  47. });
  48.  
  49. let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  50. return decryptedStr.toString();
  51. }