crypto.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var CryptoJS = require("crypto-js");
  2. console.log(CryptoJS.HmacSHA1("Message", "Key"));
  3. let crypto = {}
  4. const WHITE_LIST = [
  5. '/yeepay',
  6. '/put-file',
  7. '/blade-test',
  8. '/payment',
  9. '/sms',
  10. '/mall/yeepay/product/fee/modifyProductFeeNotify',
  11. '/shop/yeepay/product/fee/modifyProductFeeNotify',
  12. '/withdraw',
  13. '/pressure_test/scanPay',
  14. '/pressure_test/deCodeNotifyData',
  15. '/ocr',
  16. '/import-bank-type'
  17. ]
  18. crypto.isNotInWhiteList = (url) => {
  19. return !WHITE_LIST.some(item => {
  20. return url.indexOf(item) > 0
  21. })
  22. }
  23. //前后端定义的密钥,AES使用16位
  24. const CRYPTOJS_KEY = "uAY9ugkHQpvozZeA";
  25. // 加密
  26. crypto.encrypt = (plaintText) => {
  27. var plaintText = plaintText;
  28. var options = {
  29. mode: CryptoJS.mode.ECB,
  30. padding: CryptoJS.pad.Pkcs7
  31. };
  32. var key = CryptoJS.enc.Utf8.parse(CRYPTOJS_KEY);
  33. var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
  34. var encryptedBase64Str = encryptedData.toString().replace(/\//g, "_");
  35. encryptedBase64Str = encryptedBase64Str.replace(/\+/g, "-");
  36. return encryptedBase64Str;
  37. }
  38. //解密
  39. crypto.decrypt = (encryptedBase64Str) => {
  40. var vals = encryptedBase64Str.replace(/\-/g, '+').replace(/_/g, '/');
  41. var options = {
  42. mode: CryptoJS.mode.ECB,
  43. padding: CryptoJS.pad.Pkcs7
  44. };
  45. var key = CryptoJS.enc.Utf8.parse(CRYPTOJS_KEY);
  46. var decryptedData = CryptoJS.AES.decrypt(vals, key, options);
  47. var decryptedStr = CryptoJS.enc.Utf8.stringify(decryptedData);
  48. return decryptedStr
  49. }
  50. export default crypto