nest-encrypt-cycle 1.1.7 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,33 +11,81 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.EncryptService = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
- const crypto = require("crypto-js");
14
+ const crypto_1 = require("crypto");
15
15
  let EncryptService = class EncryptService {
16
16
  constructor(options) {
17
17
  this.options = options;
18
+ this.whitelistSet = new Set();
19
+ this.whitelistPatterns = [];
20
+ for (const item of this.options.whiteList) {
21
+ if (item.pathname.includes('*')) {
22
+ const regexPattern = item.pathname
23
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
24
+ .replace(/\*/g, '[^/]+');
25
+ this.whitelistPatterns.push({
26
+ method: item.method,
27
+ pattern: new RegExp(`^${regexPattern}$`),
28
+ });
29
+ }
30
+ else {
31
+ this.whitelistSet.add(`${item.method}:${item.pathname}`);
32
+ }
33
+ }
34
+ this.keyBuffer = Buffer.from(this.options.key, 'utf8');
35
+ this.ivBuffer = Buffer.from(this.options.key.slice(0, 16), 'utf8');
36
+ }
37
+ isWhitelisted(pathname, method) {
38
+ if (this.whitelistSet.has(`${method}:${pathname}`)) {
39
+ return true;
40
+ }
41
+ for (const item of this.whitelistPatterns) {
42
+ if (item.method === method && item.pattern.test(pathname)) {
43
+ return true;
44
+ }
45
+ }
46
+ return false;
18
47
  }
19
48
  encrypt(data, pathname, method) {
20
- if (this.options.whiteList.some((i) => i.pathname === pathname && i.method === method)) {
49
+ if (this.isWhitelisted(pathname, method)) {
21
50
  return data;
22
51
  }
23
52
  if (!data || typeof data !== 'string')
24
53
  return '';
25
- return crypto.AES.encrypt(data, crypto.enc.Utf8.parse(this.options.key), {
26
- iv: crypto.enc.Utf8.parse(this.options.key),
27
- padding: crypto.pad.Pkcs7,
28
- mode: crypto.mode.CBC,
29
- }).toString();
54
+ try {
55
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', this.keyBuffer, this.ivBuffer);
56
+ let encrypted = cipher.update(data, 'utf8', 'base64');
57
+ encrypted += cipher.final('base64');
58
+ return encrypted;
59
+ }
60
+ catch (error) {
61
+ console.error('Encryption failed:', {
62
+ pathname,
63
+ method,
64
+ error: error.message,
65
+ });
66
+ throw error;
67
+ }
30
68
  }
31
69
  decrypt(data, pathname, method) {
32
- if (this.options.whiteList.some((i) => i.pathname === pathname && i.method === method)) {
70
+ if (this.isWhitelisted(pathname, method)) {
33
71
  return data;
34
72
  }
35
- const decipher = crypto.AES.decrypt(data, crypto.enc.Utf8.parse(this.options.key), {
36
- iv: crypto.enc.Utf8.parse(this.options.key),
37
- padding: crypto.pad.Pkcs7,
38
- mode: crypto.mode.CBC,
39
- });
40
- return decipher.toString(crypto.enc.Utf8);
73
+ if (!data || typeof data !== 'string')
74
+ return '';
75
+ try {
76
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', this.keyBuffer, this.ivBuffer);
77
+ let decrypted = decipher.update(data, 'base64', 'utf8');
78
+ decrypted += decipher.final('utf8');
79
+ return decrypted;
80
+ }
81
+ catch (error) {
82
+ console.error('Decryption failed:', {
83
+ pathname,
84
+ method,
85
+ error: error.message,
86
+ });
87
+ throw error;
88
+ }
41
89
  }
42
90
  };
43
91
  exports.EncryptService = EncryptService;
@@ -1 +1 @@
1
- {"version":3,"file":"encrypt.service.js","sourceRoot":"","sources":["../../src/encrypt.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,oCAAoC;AAI7B,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,OAAO,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc;QACpD,IACE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CACtD,EACD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEjD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAC3C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;SACtB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc;QACpD,IACE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CACtD,EACD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CACjC,IAAI,EACJ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EACvC;YACE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAC3C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;SACtB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AAzCY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CAyC1B"}
1
+ {"version":3,"file":"encrypt.service.js","sourceRoot":"","sources":["../../src/encrypt.service.ts"],"names":[],"mappings":"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"}