crypto.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var CryptoJS = require("crypto-js");
  2. console.log(CryptoJS.HmacSHA1("Message", "Key"));
  3. let crypto = {}
  4. //前后端定义的密钥,AES使用16位
  5. const CRYPTOJS_KEY = "uAY9ugkHQpvozZeA";
  6. const WHITE_LIST = [
  7. '/yeepay',
  8. '/put-file',
  9. '/blade-test',
  10. '/payment',
  11. '/sms',
  12. '/mall/yeepay/product/fee/modifyProductFeeNotify',
  13. '/shop/yeepay/product/fee/modifyProductFeeNotify',
  14. '/withdraw',
  15. '/pressure_test/scanPay',
  16. '/pressure_test/deCodeNotifyData',
  17. '/ocr',
  18. '/import-bank-type'
  19. ]
  20. crypto.isNotInWhiteList = (url) => {
  21. return !WHITE_LIST.some(item => {
  22. return url.indexOf(item) > 0
  23. })
  24. }
  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