encrypt.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import CryptoJS from 'crypto-js'
  2. const key1 = CryptoJS.enc.Utf8.parse('dmngJmmO+9GMw+tu')
  3. const iv1 = CryptoJS.enc.Utf8.parse('sanXyqhk8+U7LPP4')
  4. const key2 = CryptoJS.enc.Utf8.parse('49PBou+TREIOzSHj')
  5. const iv2 = CryptoJS.enc.Utf8.parse('5lDsNRe&UduJ97uS')
  6. // AES加密
  7. export const encryptByAes = (pwd, type = 'normal') => {
  8. let encrypted = ''
  9. const key = type === 'normal' ? key1 : key2
  10. const iv = type === 'normal' ? iv1 : iv2
  11. if (typeof pwd === 'string') {
  12. const srcs = CryptoJS.enc.Utf8.parse(pwd)
  13. const options = {
  14. iv: iv,
  15. mode: CryptoJS.mode.CBC, // 使用CBC模式
  16. padding: CryptoJS.pad.Pkcs7 // 使用PKCS7填充
  17. }
  18. encrypted = CryptoJS.AES.encrypt(srcs, key, options)
  19. } else if (typeof pwd === 'object') {
  20. const data = JSON.stringify(pwd)
  21. const srcs = CryptoJS.enc.Utf8.parse(data)
  22. const options = {
  23. iv: iv,
  24. mode: CryptoJS.mode.CBC, // 使用CBC模式
  25. padding: CryptoJS.pad.Pkcs7 // 使用PKCS7填充
  26. }
  27. encrypted = CryptoJS.AES.encrypt(srcs, key, options)
  28. }
  29. return encrypted.ciphertext.toString(CryptoJS.enc.Base64)
  30. }
  31. export const decryptByAes = (encryptedText, type = 'normal') => {
  32. const key = type === 'normal' ? key1 : key2
  33. const iv = type === 'normal' ? iv1 : iv2
  34. const options = {
  35. iv: iv,
  36. mode: CryptoJS.mode.CBC, // 使用CBC模式
  37. padding: CryptoJS.pad.Pkcs7 // 使用PKCS7填充
  38. }
  39. const encryptedData = CryptoJS.enc.Base64.parse(encryptedText)
  40. const decryptedData = CryptoJS.AES.decrypt({ ciphertext: encryptedData }, key, options)
  41. const decryptedText = decryptedData.toString(CryptoJS.enc.Utf8)
  42. return decryptedText.trim()
  43. }