encrypt.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import './rsa'
  2. import './aes'
  3. import {AESDec, AESEnc, getKey} from "./aes";
  4. import {RSA} from "./rsa";
  5. import Qs from "qs";
  6. import axios from "axios";
  7. import qs from "qs";
  8. class EncryptObj {
  9. key = ''
  10. encryptKey = ''
  11. cipherText = ''
  12. fetch = axios.create({
  13. baseURL: "http://api.ignatz.xyz/", // 这里是本地express启动的服务地址
  14. timeout: 5000 // request timeout
  15. })
  16. encrypt = content => {
  17. this.key = getKey()
  18. this.encryptKey = RSA(this.key)
  19. this.cipherText = AESEnc(this.key, content)
  20. this.fetch.interceptors.request.use(config => {
  21. config.headers['X-Requested-With'] = 'XMLHttpRequest'
  22. // let regex = /.*csrftoken=([^;.]*).*$/
  23. // config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]
  24. if (config.method === 'post' || config.method === 'put' || config.method === 'delete') {
  25. if (typeof (config.data) !== 'string' && config.headers['Content-Type'] !== 'multipart/form-data') {
  26. config.data = qs.stringify(config.data)
  27. }
  28. }
  29. return config
  30. }, error => {
  31. Promise.reject(error)
  32. })
  33. this.fetch.interceptors.response.use(async data => {
  34. console.log(data.data.enc_content)
  35. console.log(this.key)
  36. console.log("明文: " + AESDec(this.key, data.data.enc_content))
  37. return JSON.parse(AESDec(this.key, data.data.enc_content))
  38. }, error => {
  39. if (error.response) {
  40. if (error.response.status === 500) {
  41. console.log('服务器错误,请联系管理员处理')
  42. }
  43. console.log('1服务器错误,请联系管理员处理')
  44. return Promise.reject(error.response.data)
  45. } else {
  46. console.log('2服务器错误,请联系管理员处理')
  47. return Promise.reject(error)
  48. }
  49. })
  50. }
  51. postData = param => {
  52. this.encrypt(param.data)
  53. let e_param = {
  54. cipher_text: this.cipherText,
  55. enc_key: this.encryptKey,
  56. }
  57. console.log(this.key + "233ok")
  58. return this.fetch({
  59. url: param.url,
  60. method: param.method,
  61. data: Qs.stringify(e_param),
  62. })
  63. }
  64. }
  65. export default EncryptObj;