@tiny-codes/react-easy 1.4.10 β†’ 1.4.12

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## 1.4.12
6
+
7
+ 2025-9-5
8
+
9
+ ### Bug Fixes
10
+
11
+ #### `utils.crypto`
12
+
13
+ - 🐞 Optimize the order of `crypto-js` imports
14
+
15
+ ## 1.4.11
16
+
17
+ 2025-9-3
18
+
19
+ ### Features
20
+
21
+ #### `utils.crypto`
22
+
23
+ - ✨ improve the compatibility of `advancedEncrypt` and `advancedDecrypt` methods to support insecure contexts, such as HTTP.
24
+
5
25
  ## 1.4.10
6
26
 
7
27
  2025-9-3
@@ -24,3 +24,5 @@ export declare function encryptAES(text: string, key: string): Promise<string>;
24
24
  * @returns The decrypted text
25
25
  */
26
26
  export declare function decryptAES(encryptedText: string, key: string): Promise<string>;
27
+ export declare function encryptWithCryptoJS(text: string, key: string): Promise<string>;
28
+ export declare function decryptWithCryptoJS(encryptedText: string, key: string): Promise<string>;
@@ -119,41 +119,50 @@ function _encryptAES() {
119
119
  encrypted += cipher.final('base64');
120
120
  return _context3.abrupt("return", "".concat(iv.toString('base64'), ":").concat(encrypted));
121
121
  case 11:
122
- _context3.prev = 11;
122
+ if (!crypto.subtle) {
123
+ _context3.next = 37;
124
+ break;
125
+ }
126
+ _context3.prev = 12;
123
127
  _iv = crypto.getRandomValues(new Uint8Array(16));
124
128
  encoder = new TextEncoder();
125
129
  keyData = encoder.encode(key);
126
- _context3.next = 17;
130
+ _context3.next = 18;
127
131
  return crypto.subtle.digest('SHA-256', keyData);
128
- case 17:
132
+ case 18:
129
133
  hashBuffer = _context3.sent;
130
- _context3.next = 20;
134
+ _context3.next = 21;
131
135
  return crypto.subtle.importKey('raw', hashBuffer, {
132
136
  name: 'AES-CBC'
133
137
  }, false, ['encrypt']);
134
- case 20:
138
+ case 21:
135
139
  cryptoKey = _context3.sent;
136
140
  textBytes = encoder.encode(text);
137
- _context3.next = 24;
141
+ _context3.next = 25;
138
142
  return crypto.subtle.encrypt({
139
143
  name: 'AES-CBC',
140
144
  iv: _iv
141
145
  }, cryptoKey, textBytes);
142
- case 24:
146
+ case 25:
143
147
  encryptedBuffer = _context3.sent;
144
148
  ivBase64 = btoa(String.fromCharCode.apply(String, _toConsumableArray(_iv)));
145
149
  encryptedBase64 = btoa(String.fromCharCode.apply(String, _toConsumableArray(new Uint8Array(encryptedBuffer))));
146
150
  return _context3.abrupt("return", "".concat(ivBase64, ":").concat(encryptedBase64));
147
- case 30:
148
- _context3.prev = 30;
149
- _context3.t0 = _context3["catch"](11);
151
+ case 31:
152
+ _context3.prev = 31;
153
+ _context3.t0 = _context3["catch"](12);
150
154
  console.error('Encryption error:', _context3.t0);
151
155
  throw _context3.t0;
152
- case 34:
156
+ case 35:
157
+ _context3.next = 38;
158
+ break;
159
+ case 37:
160
+ return _context3.abrupt("return", encryptWithCryptoJS(text, key));
161
+ case 38:
153
162
  case "end":
154
163
  return _context3.stop();
155
164
  }
156
- }, _callee3, null, [[11, 30]]);
165
+ }, _callee3, null, [[12, 31]]);
157
166
  }));
158
167
  return _encryptAES.apply(this, arguments);
159
168
  }
@@ -190,7 +199,11 @@ function _decryptAES() {
190
199
  decrypted = Buffer.concat([decrypted, decipher.final()]);
191
200
  return _context4.abrupt("return", decrypted.toString('utf8'));
192
201
  case 16:
193
- // Browsers
202
+ if (!crypto.subtle) {
203
+ _context4.next = 34;
204
+ break;
205
+ }
206
+ // Browsers with Web Crypto API, in secure contexts (HTTPS)
194
207
  _iv2 = Uint8Array.from(atob(ivBase64), function (c) {
195
208
  return c.charCodeAt(0);
196
209
  });
@@ -199,39 +212,131 @@ function _decryptAES() {
199
212
  });
200
213
  encoder = new TextEncoder();
201
214
  keyData = encoder.encode(key);
202
- _context4.next = 22;
215
+ _context4.next = 23;
203
216
  return crypto.subtle.digest('SHA-256', keyData);
204
- case 22:
217
+ case 23:
205
218
  hashBuffer = _context4.sent;
206
- _context4.next = 25;
219
+ _context4.next = 26;
207
220
  return crypto.subtle.importKey('raw', hashBuffer, {
208
221
  name: 'AES-CBC'
209
222
  }, false, ['decrypt']);
210
- case 25:
223
+ case 26:
211
224
  cryptoKey = _context4.sent;
212
- _context4.next = 28;
225
+ _context4.next = 29;
213
226
  return crypto.subtle.decrypt({
214
227
  name: 'AES-CBC',
215
228
  iv: _iv2
216
229
  }, cryptoKey, encryptedData);
217
- case 28:
230
+ case 29:
218
231
  decryptedBuffer = _context4.sent;
219
232
  decoder = new TextDecoder();
220
233
  return _context4.abrupt("return", decoder.decode(decryptedBuffer));
221
- case 31:
222
- _context4.next = 37;
234
+ case 34:
235
+ return _context4.abrupt("return", decryptWithCryptoJS(encryptedText, key));
236
+ case 35:
237
+ _context4.next = 41;
223
238
  break;
224
- case 33:
225
- _context4.prev = 33;
239
+ case 37:
240
+ _context4.prev = 37;
226
241
  _context4.t0 = _context4["catch"](1);
227
242
  console.error('Decryption error:', _context4.t0);
228
243
  return _context4.abrupt("return", '');
229
- case 37:
244
+ case 41:
230
245
  case "end":
231
246
  return _context4.stop();
232
247
  }
233
- }, _callee4, null, [[1, 33]]);
248
+ }, _callee4, null, [[1, 37]]);
234
249
  }));
235
250
  return _decryptAES.apply(this, arguments);
236
251
  }
252
+ export function encryptWithCryptoJS(_x9, _x10) {
253
+ return _encryptWithCryptoJS.apply(this, arguments);
254
+ }
255
+ function _encryptWithCryptoJS() {
256
+ _encryptWithCryptoJS = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(text, key) {
257
+ var _yield$Promise$all, _yield$Promise$all2, _yield$Promise$all2$, CBC, WordArray, Pkcs7, Base64, Utf8, SHA256, encrypt, wordArray, keyArray, iv, encryptedBase64;
258
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
259
+ while (1) switch (_context5.prev = _context5.next) {
260
+ case 0:
261
+ _context5.next = 2;
262
+ return Promise.all([import('crypto-js/core.js'), import('crypto-js/pad-pkcs7.js'), import('crypto-js/enc-base64.js'), import('crypto-js/enc-utf8.js'), import('crypto-js/sha256.js'), import('crypto-js/aes.js')]);
263
+ case 2:
264
+ _yield$Promise$all = _context5.sent;
265
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 6);
266
+ _yield$Promise$all2$ = _yield$Promise$all2[0].default;
267
+ CBC = _yield$Promise$all2$.mode.CBC;
268
+ WordArray = _yield$Promise$all2$.lib.WordArray;
269
+ Pkcs7 = _yield$Promise$all2[1].default;
270
+ Base64 = _yield$Promise$all2[2].default;
271
+ Utf8 = _yield$Promise$all2[3].default;
272
+ SHA256 = _yield$Promise$all2[4].default;
273
+ encrypt = _yield$Promise$all2[5].default.encrypt;
274
+ _context5.prev = 12;
275
+ // Convert text and key to WordArray objects
276
+ wordArray = Utf8.parse(text);
277
+ keyArray = SHA256(key);
278
+ iv = WordArray.random(16);
279
+ encryptedBase64 = Base64.stringify(encrypt(wordArray, keyArray, {
280
+ iv: iv,
281
+ mode: CBC,
282
+ padding: Pkcs7
283
+ }).ciphertext);
284
+ return _context5.abrupt("return", "".concat(Base64.stringify(iv), ":").concat(encryptedBase64));
285
+ case 20:
286
+ _context5.prev = 20;
287
+ _context5.t0 = _context5["catch"](12);
288
+ console.error('Encryption error:', _context5.t0);
289
+ throw _context5.t0;
290
+ case 24:
291
+ case "end":
292
+ return _context5.stop();
293
+ }
294
+ }, _callee5, null, [[12, 20]]);
295
+ }));
296
+ return _encryptWithCryptoJS.apply(this, arguments);
297
+ }
298
+ export function decryptWithCryptoJS(_x11, _x12) {
299
+ return _decryptWithCryptoJS.apply(this, arguments);
300
+ }
301
+ function _decryptWithCryptoJS() {
302
+ _decryptWithCryptoJS = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(encryptedText, key) {
303
+ var _encryptedText$split3, _encryptedText$split4, ivBase64, encryptedBase64, _yield$Promise$all3, _yield$Promise$all4, Base64, Utf8, CBC, Pkcs7, SHA256, decrypt, iv, derivedKey, decrypted;
304
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
305
+ while (1) switch (_context6.prev = _context6.next) {
306
+ case 0:
307
+ _encryptedText$split3 = encryptedText.split(':'), _encryptedText$split4 = _slicedToArray(_encryptedText$split3, 2), ivBase64 = _encryptedText$split4[0], encryptedBase64 = _encryptedText$split4[1];
308
+ _context6.next = 3;
309
+ return Promise.all([import('crypto-js/enc-base64.js'), import('crypto-js/enc-utf8.js'), import('crypto-js/core.js'), import('crypto-js/pad-pkcs7.js'), import('crypto-js/sha256.js'), import('crypto-js/aes.js')]);
310
+ case 3:
311
+ _yield$Promise$all3 = _context6.sent;
312
+ _yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 6);
313
+ Base64 = _yield$Promise$all4[0].default;
314
+ Utf8 = _yield$Promise$all4[1].default;
315
+ CBC = _yield$Promise$all4[2].default.mode.CBC;
316
+ Pkcs7 = _yield$Promise$all4[3].default;
317
+ SHA256 = _yield$Promise$all4[4].default;
318
+ decrypt = _yield$Promise$all4[5].default.decrypt;
319
+ _context6.prev = 11;
320
+ // Convert base64 strings to WordArray objects
321
+ iv = Base64.parse(ivBase64); // Derive key using SHA-256 (matching native implementation)
322
+ derivedKey = SHA256(key);
323
+ decrypted = decrypt(encryptedBase64, derivedKey, {
324
+ iv: iv,
325
+ mode: CBC,
326
+ padding: Pkcs7
327
+ });
328
+ return _context6.abrupt("return", decrypted.toString(Utf8));
329
+ case 18:
330
+ _context6.prev = 18;
331
+ _context6.t0 = _context6["catch"](11);
332
+ console.error('Decryption error:', _context6.t0);
333
+ throw _context6.t0;
334
+ case 22:
335
+ case "end":
336
+ return _context6.stop();
337
+ }
338
+ }, _callee6, null, [[11, 18]]);
339
+ }));
340
+ return _decryptWithCryptoJS.apply(this, arguments);
341
+ }
237
342
  //# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","getRandomValues","Uint8Array","TextEncoder","encode","subtle","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES εŠ ε―†ε‡½ζ•° - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param {string} text The text to be encrypted | θ¦εŠ ε―†ηš„ζ–‡ζœ¬\n * @param {string} key The encryption key | εŠ ε―†ε―†ι’₯\n *\n * @returns {Promise<string>} The encrypted text | εŠ ε―†εŽηš„ζ–‡ζœ¬\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES 解密函数 - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n // Browsers\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","subtle","getRandomValues","Uint8Array","TextEncoder","encode","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","encryptWithCryptoJS","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode","decryptWithCryptoJS","_x9","_x10","_encryptWithCryptoJS","_callee5","_yield$Promise$all","_yield$Promise$all2","_yield$Promise$all2$","CBC","WordArray","Pkcs7","Base64","Utf8","SHA256","wordArray","keyArray","_callee5$","_context5","all","default","mode","lib","parse","stringify","padding","ciphertext","_x11","_x12","_decryptWithCryptoJS","_callee6","_encryptedText$split3","_encryptedText$split4","_yield$Promise$all3","_yield$Promise$all4","_callee6$","_context6"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES εŠ ε―†ε‡½ζ•° - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param {string} text The text to be encrypted | θ¦εŠ ε―†ηš„ζ–‡ζœ¬\n * @param {string} key The encryption key | εŠ ε―†ε―†ι’₯\n *\n * @returns {Promise<string>} The encrypted text | εŠ ε―†εŽηš„ζ–‡ζœ¬\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n if (crypto.subtle) {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n } else {\n // let encrypt: typeof CryptoJS.AES.encrypt;\n // try {\n // const aes = await import('crypto-js/aes');\n // encrypt = aes.encrypt;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // return encrypt(text, key).toString();\n // } catch (error) {\n // console.error('Encryption error:', error);\n // throw error;\n // }\n return encryptWithCryptoJS(text, key);\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES 解密函数 - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n if (crypto.subtle) {\n // Browsers with Web Crypto API, in secure contexts (HTTPS)\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n } else {\n // Browsers without Web Crypto API, or insecure contexts (HTTP), fallback to CryptoJS\n // let decrypt: typeof CryptoJS.AES.decrypt;\n // let utf8: typeof CryptoJS.enc.Utf8;\n // try {\n // const [aes, encUtf8] = await Promise.all([import('crypto-js/aes'), import('crypto-js/enc-utf8')]);\n // decrypt = aes.decrypt;\n // utf8 = encUtf8.default;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // const decrypted = decrypt(encryptedText, key);\n // return decrypted.toString(utf8);\n // } catch (error) {\n // console.error('Decryption error:', error);\n // throw error;\n // }\n return decryptWithCryptoJS(encryptedText, key);\n }\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\nexport async function encryptWithCryptoJS(text: string, key: string) {\n const [\n {\n default: {\n mode: { CBC },\n lib: { WordArray },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { encrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert text and key to WordArray objects\n const wordArray = Utf8.parse(text);\n const keyArray = SHA256(key);\n const iv = WordArray.random(16);\n\n const encryptedBase64 = Base64.stringify(\n encrypt(wordArray, keyArray, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n }).ciphertext\n );\n return `${Base64.stringify(iv)}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n}\n\nexport async function decryptWithCryptoJS(encryptedText: string, key: string) {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n\n const [\n { default: Base64 },\n { default: Utf8 },\n {\n default: {\n mode: { CBC },\n },\n },\n { default: Pkcs7 },\n { default: SHA256 },\n {\n default: { decrypt },\n },\n ] = await Promise.all([\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert base64 strings to WordArray objects\n const iv = Base64.parse(ivBase64);\n // Derive key using SHA-256 (matching native implementation)\n const derivedKey = SHA256(key);\n const decrypted = decrypt(encryptedBase64, derivedKey, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n });\n return decrypted.toString(Utf8);\n } catch (error) {\n console.error('Decryption error:', error);\n throw error;\n }\n}\n"],"mappings":"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"}
@@ -24,3 +24,5 @@ export declare function encryptAES(text: string, key: string): Promise<string>;
24
24
  * @returns The decrypted text
25
25
  */
26
26
  export declare function decryptAES(encryptedText: string, key: string): Promise<string>;
27
+ export declare function encryptWithCryptoJS(text: string, key: string): Promise<string>;
28
+ export declare function decryptWithCryptoJS(encryptedText: string, key: string): Promise<string>;
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
18
  };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // src/utils/crypto.ts
@@ -22,7 +32,9 @@ __export(crypto_exports, {
22
32
  advancedDecrypt: () => advancedDecrypt,
23
33
  advancedEncrypt: () => advancedEncrypt,
24
34
  decryptAES: () => decryptAES,
25
- encryptAES: () => encryptAES
35
+ decryptWithCryptoJS: () => decryptWithCryptoJS,
36
+ encryptAES: () => encryptAES,
37
+ encryptWithCryptoJS: () => encryptWithCryptoJS
26
38
  });
27
39
  module.exports = __toCommonJS(crypto_exports);
28
40
  var import_base64 = require("./base64");
@@ -57,20 +69,24 @@ async function encryptAES(text, key) {
57
69
  encrypted += cipher.final("base64");
58
70
  return `${iv.toString("base64")}:${encrypted}`;
59
71
  } else {
60
- try {
61
- const iv = crypto.getRandomValues(new Uint8Array(16));
62
- const encoder = new TextEncoder();
63
- const keyData = encoder.encode(key);
64
- const hashBuffer = await crypto.subtle.digest("SHA-256", keyData);
65
- const cryptoKey = await crypto.subtle.importKey("raw", hashBuffer, { name: "AES-CBC" }, false, ["encrypt"]);
66
- const textBytes = encoder.encode(text);
67
- const encryptedBuffer = await crypto.subtle.encrypt({ name: "AES-CBC", iv }, cryptoKey, textBytes);
68
- const ivBase64 = btoa(String.fromCharCode(...iv));
69
- const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));
70
- return `${ivBase64}:${encryptedBase64}`;
71
- } catch (error) {
72
- console.error("Encryption error:", error);
73
- throw error;
72
+ if (crypto.subtle) {
73
+ try {
74
+ const iv = crypto.getRandomValues(new Uint8Array(16));
75
+ const encoder = new TextEncoder();
76
+ const keyData = encoder.encode(key);
77
+ const hashBuffer = await crypto.subtle.digest("SHA-256", keyData);
78
+ const cryptoKey = await crypto.subtle.importKey("raw", hashBuffer, { name: "AES-CBC" }, false, ["encrypt"]);
79
+ const textBytes = encoder.encode(text);
80
+ const encryptedBuffer = await crypto.subtle.encrypt({ name: "AES-CBC", iv }, cryptoKey, textBytes);
81
+ const ivBase64 = btoa(String.fromCharCode(...iv));
82
+ const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));
83
+ return `${ivBase64}:${encryptedBase64}`;
84
+ } catch (error) {
85
+ console.error("Encryption error:", error);
86
+ throw error;
87
+ }
88
+ } else {
89
+ return encryptWithCryptoJS(text, key);
74
90
  }
75
91
  }
76
92
  }
@@ -91,26 +107,109 @@ async function decryptAES(encryptedText, key) {
91
107
  decrypted = Buffer.concat([decrypted, decipher.final()]);
92
108
  return decrypted.toString("utf8");
93
109
  } else {
94
- const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));
95
- const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));
96
- const encoder = new TextEncoder();
97
- const keyData = encoder.encode(key);
98
- const hashBuffer = await crypto.subtle.digest("SHA-256", keyData);
99
- const cryptoKey = await crypto.subtle.importKey("raw", hashBuffer, { name: "AES-CBC" }, false, ["decrypt"]);
100
- const decryptedBuffer = await crypto.subtle.decrypt({ name: "AES-CBC", iv }, cryptoKey, encryptedData);
101
- const decoder = new TextDecoder();
102
- return decoder.decode(decryptedBuffer);
110
+ if (crypto.subtle) {
111
+ const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));
112
+ const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));
113
+ const encoder = new TextEncoder();
114
+ const keyData = encoder.encode(key);
115
+ const hashBuffer = await crypto.subtle.digest("SHA-256", keyData);
116
+ const cryptoKey = await crypto.subtle.importKey("raw", hashBuffer, { name: "AES-CBC" }, false, ["decrypt"]);
117
+ const decryptedBuffer = await crypto.subtle.decrypt({ name: "AES-CBC", iv }, cryptoKey, encryptedData);
118
+ const decoder = new TextDecoder();
119
+ return decoder.decode(decryptedBuffer);
120
+ } else {
121
+ return decryptWithCryptoJS(encryptedText, key);
122
+ }
103
123
  }
104
124
  } catch (error) {
105
125
  console.error("Decryption error:", error);
106
126
  return "";
107
127
  }
108
128
  }
129
+ async function encryptWithCryptoJS(text, key) {
130
+ const [
131
+ {
132
+ default: {
133
+ mode: { CBC },
134
+ lib: { WordArray }
135
+ }
136
+ },
137
+ { default: Pkcs7 },
138
+ { default: Base64 },
139
+ { default: Utf8 },
140
+ { default: SHA256 },
141
+ {
142
+ default: { encrypt }
143
+ }
144
+ ] = await Promise.all([
145
+ import("crypto-js/core.js"),
146
+ import("crypto-js/pad-pkcs7.js"),
147
+ import("crypto-js/enc-base64.js"),
148
+ import("crypto-js/enc-utf8.js"),
149
+ import("crypto-js/sha256.js"),
150
+ import("crypto-js/aes.js")
151
+ ]);
152
+ try {
153
+ const wordArray = Utf8.parse(text);
154
+ const keyArray = SHA256(key);
155
+ const iv = WordArray.random(16);
156
+ const encryptedBase64 = Base64.stringify(
157
+ encrypt(wordArray, keyArray, {
158
+ iv,
159
+ mode: CBC,
160
+ padding: Pkcs7
161
+ }).ciphertext
162
+ );
163
+ return `${Base64.stringify(iv)}:${encryptedBase64}`;
164
+ } catch (error) {
165
+ console.error("Encryption error:", error);
166
+ throw error;
167
+ }
168
+ }
169
+ async function decryptWithCryptoJS(encryptedText, key) {
170
+ const [ivBase64, encryptedBase64] = encryptedText.split(":");
171
+ const [
172
+ { default: Base64 },
173
+ { default: Utf8 },
174
+ {
175
+ default: {
176
+ mode: { CBC }
177
+ }
178
+ },
179
+ { default: Pkcs7 },
180
+ { default: SHA256 },
181
+ {
182
+ default: { decrypt }
183
+ }
184
+ ] = await Promise.all([
185
+ import("crypto-js/enc-base64.js"),
186
+ import("crypto-js/enc-utf8.js"),
187
+ import("crypto-js/core.js"),
188
+ import("crypto-js/pad-pkcs7.js"),
189
+ import("crypto-js/sha256.js"),
190
+ import("crypto-js/aes.js")
191
+ ]);
192
+ try {
193
+ const iv = Base64.parse(ivBase64);
194
+ const derivedKey = SHA256(key);
195
+ const decrypted = decrypt(encryptedBase64, derivedKey, {
196
+ iv,
197
+ mode: CBC,
198
+ padding: Pkcs7
199
+ });
200
+ return decrypted.toString(Utf8);
201
+ } catch (error) {
202
+ console.error("Decryption error:", error);
203
+ throw error;
204
+ }
205
+ }
109
206
  // Annotate the CommonJS export names for ESM import in node:
110
207
  0 && (module.exports = {
111
208
  advancedDecrypt,
112
209
  advancedEncrypt,
113
210
  decryptAES,
114
- encryptAES
211
+ decryptWithCryptoJS,
212
+ encryptAES,
213
+ encryptWithCryptoJS
115
214
  });
116
215
  //# sourceMappingURL=crypto.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/crypto.ts"],
4
- "sourcesContent": ["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES εŠ ε―†ε‡½ζ•° - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param {string} text The text to be encrypted | θ¦εŠ ε―†ηš„ζ–‡ζœ¬\n * @param {string} key The encryption key | εŠ ε―†ε―†ι’₯\n *\n * @returns {Promise<string>} The encrypted text | εŠ ε―†εŽηš„ζ–‡ζœ¬\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES 解密函数 - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n // Browsers\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES εŠ ε―†ε‡½ζ•° - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param {string} text The text to be encrypted | θ¦εŠ ε―†ηš„ζ–‡ζœ¬\n * @param {string} key The encryption key | εŠ ε―†ε―†ι’₯\n *\n * @returns {Promise<string>} The encrypted text | εŠ ε―†εŽηš„ζ–‡ζœ¬\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n if (crypto.subtle) {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n } else {\n // let encrypt: typeof CryptoJS.AES.encrypt;\n // try {\n // const aes = await import('crypto-js/aes');\n // encrypt = aes.encrypt;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // return encrypt(text, key).toString();\n // } catch (error) {\n // console.error('Encryption error:', error);\n // throw error;\n // }\n return encryptWithCryptoJS(text, key);\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: ι€šη”¨ AES 解密函数 - εŒζ—Άζ”―ζŒ Node.js ε’Œζ΅θ§ˆε™¨ηŽ―ε’ƒ\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n if (crypto.subtle) {\n // Browsers with Web Crypto API, in secure contexts (HTTPS)\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n } else {\n // Browsers without Web Crypto API, or insecure contexts (HTTP), fallback to CryptoJS\n // let decrypt: typeof CryptoJS.AES.decrypt;\n // let utf8: typeof CryptoJS.enc.Utf8;\n // try {\n // const [aes, encUtf8] = await Promise.all([import('crypto-js/aes'), import('crypto-js/enc-utf8')]);\n // decrypt = aes.decrypt;\n // utf8 = encUtf8.default;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // const decrypted = decrypt(encryptedText, key);\n // return decrypted.toString(utf8);\n // } catch (error) {\n // console.error('Decryption error:', error);\n // throw error;\n // }\n return decryptWithCryptoJS(encryptedText, key);\n }\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\nexport async function encryptWithCryptoJS(text: string, key: string) {\n const [\n {\n default: {\n mode: { CBC },\n lib: { WordArray },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { encrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert text and key to WordArray objects\n const wordArray = Utf8.parse(text);\n const keyArray = SHA256(key);\n const iv = WordArray.random(16);\n\n const encryptedBase64 = Base64.stringify(\n encrypt(wordArray, keyArray, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n }).ciphertext\n );\n return `${Base64.stringify(iv)}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n}\n\nexport async function decryptWithCryptoJS(encryptedText: string, key: string) {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n\n const [\n { default: Base64 },\n { default: Utf8 },\n {\n default: {\n mode: { CBC },\n },\n },\n { default: Pkcs7 },\n { default: SHA256 },\n {\n default: { decrypt },\n },\n ] = await Promise.all([\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert base64 strings to WordArray objects\n const iv = Base64.parse(ivBase64);\n // Derive key using SHA-256 (matching native implementation)\n const derivedKey = SHA256(key);\n const decrypted = decrypt(encryptedBase64, derivedKey, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n });\n return decrypted.toString(Utf8);\n } catch (error) {\n console.error('Decryption error:', error);\n throw error;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA+C;AAC/C,kBAAuB;AACvB,oBAA4B;AAG5B,eAAsB,gBAAgB,WAAmB,KAAa;AACpE,QAAM,SAAK,2BAAY,EAAE;AACzB,MAAI,IAAI,MAAM,WAAW,WAAW,EAAE;AACtC,QAAM,QAAI,8BAAe,EAAE;AAC3B,QAAM,IAAI,EAAE;AACZ,QAAM,QAAI,oBAAO,GAAG,EAAE,MAAM;AAC5B,MAAI,EAAE,UAAU,GAAG,CAAC,IAAI,IAAI,EAAE,UAAU,CAAC;AACzC,QAAM,QAAI,8BAAe,GAAG,KAAK,GAAG;AACpC,QAAM,IAAI,GAAG,KAAK;AAClB,SAAO,WAAW,GAAG,GAAG;AAC1B;AAGA,eAAsB,gBAAgB,eAAuB,KAAa;AACxE,QAAM,YAAY,MAAM,WAAW,eAAe,GAAG;AACrD,QAAM,CAAC,GAAG,CAAC,IAAI,UAAU,MAAM,GAAG;AAClC,QAAM,CAAC,GAAG,CAAC,QAAI,8BAAe,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM;AACtD,QAAM,SAAK,8BAAe,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;AAC/C,SAAO,WAAW,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;AAC9D;AAYA,eAAsB,WAAW,MAAc,KAA8B;AAC3E,QAAM,SAAS,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,QAAQ,SAAS,QAAQ;AAEtG,MAAI,QAAQ;AAGV,UAAMA,UAAS,QAAQ,QAAQ;AAC/B,UAAM,aAAaA,QAAO,WAAW,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO;AAClE,UAAM,KAAKA,QAAO,YAAY,EAAE;AAChC,UAAM,SAASA,QAAO,eAAe,eAAe,YAAY,EAAE;AAClE,QAAI,YAAY,OAAO,OAAO,MAAM,QAAQ,QAAQ;AACpD,iBAAa,OAAO,MAAM,QAAQ;AAClC,WAAO,GAAG,GAAG,SAAS,QAAQ,KAAK;AAAA,EACrC,OAAO;AACL,QAAI,OAAO,QAAQ;AAEjB,UAAI;AACF,cAAM,KAAK,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC;AACpD,cAAM,UAAU,IAAI,YAAY;AAChC,cAAM,UAAU,QAAQ,OAAO,GAAG;AAClC,cAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,OAAO;AAChE,cAAM,YAAY,MAAM,OAAO,OAAO,UAAU,OAAO,YAAY,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AAC1G,cAAM,YAAY,QAAQ,OAAO,IAAI;AACrC,cAAM,kBAAkB,MAAM,OAAO,OAAO,QAAQ,EAAE,MAAM,WAAW,GAAG,GAAG,WAAW,SAAS;AACjG,cAAM,WAAW,KAAK,OAAO,aAAa,GAAG,EAAE,CAAC;AAChD,cAAM,kBAAkB,KAAK,OAAO,aAAa,GAAG,IAAI,WAAW,eAAe,CAAC,CAAC;AACpF,eAAO,GAAG,YAAY;AAAA,MACxB,SAAS,OAAP;AACA,gBAAQ,MAAM,qBAAqB,KAAK;AACxC,cAAM;AAAA,MACR;AAAA,IACF,OAAO;AAeL,aAAO,oBAAoB,MAAM,GAAG;AAAA,IACtC;AAAA,EACF;AACF;AAYA,eAAsB,WAAW,eAAuB,KAA8B;AACpF,QAAM,SAAS,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,QAAQ,SAAS,QAAQ;AACtG,MAAI;AACF,UAAM,CAAC,UAAU,eAAe,IAAI,cAAc,MAAM,GAAG;AAC3D,QAAI,CAAC,YAAY,CAAC,iBAAiB;AACjC,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AACA,QAAI,QAAQ;AAGV,YAAMA,UAAS,QAAQ,QAAQ;AAC/B,YAAM,KAAK,OAAO,KAAK,UAAU,QAAQ;AACzC,YAAM,kBAAkB,OAAO,KAAK,iBAAiB,QAAQ;AAC7D,YAAM,aAAaA,QAAO,WAAW,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO;AAClE,YAAM,WAAWA,QAAO,iBAAiB,eAAe,YAAY,EAAE;AACtE,UAAI,YAAY,SAAS,OAAO,eAAe;AAC/C,kBAAY,OAAO,OAAO,CAAC,WAAW,SAAS,MAAM,CAAC,CAAC;AACvD,aAAO,UAAU,SAAS,MAAM;AAAA,IAClC,OAAO;AACL,UAAI,OAAO,QAAQ;AAEjB,cAAM,KAAK,WAAW,KAAK,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACjE,cAAM,gBAAgB,WAAW,KAAK,KAAK,eAAe,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnF,cAAM,UAAU,IAAI,YAAY;AAChC,cAAM,UAAU,QAAQ,OAAO,GAAG;AAClC,cAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,OAAO;AAChE,cAAM,YAAY,MAAM,OAAO,OAAO,UAAU,OAAO,YAAY,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AAC1G,cAAM,kBAAkB,MAAM,OAAO,OAAO,QAAQ,EAAE,MAAM,WAAW,GAAG,GAAG,WAAW,aAAa;AACrG,cAAM,UAAU,IAAI,YAAY;AAChC,eAAO,QAAQ,OAAO,eAAe;AAAA,MACvC,OAAO;AAmBL,eAAO,oBAAoB,eAAe,GAAG;AAAA,MAC/C;AAAA,IACF;AAAA,EACF,SAAS,OAAP;AACA,YAAQ,MAAM,qBAAqB,KAAK;AACxC,WAAO;AAAA,EACT;AACF;AACA,eAAsB,oBAAoB,MAAc,KAAa;AACnE,QAAM;AAAA,IACJ;AAAA,MACE,SAAS;AAAA,QACP,MAAM,EAAE,IAAI;AAAA,QACZ,KAAK,EAAE,UAAU;AAAA,MACnB;AAAA,IACF;AAAA,IACA,EAAE,SAAS,MAAM;AAAA,IACjB,EAAE,SAAS,OAAO;AAAA,IAClB,EAAE,SAAS,KAAK;AAAA,IAChB,EAAE,SAAS,OAAO;AAAA,IAClB;AAAA,MACE,SAAS,EAAE,QAAQ;AAAA,IACrB;AAAA,EACF,IAAI,MAAM,QAAQ,IAAI;AAAA,IACpB,OAAO,mBAAmB;AAAA,IAC1B,OAAO,wBAAwB;AAAA,IAC/B,OAAO,yBAAyB;AAAA,IAChC,OAAO,uBAAuB;AAAA,IAC9B,OAAO,qBAAqB;AAAA,IAC5B,OAAO,kBAAkB;AAAA,EAC3B,CAAC;AAED,MAAI;AAEF,UAAM,YAAY,KAAK,MAAM,IAAI;AACjC,UAAM,WAAW,OAAO,GAAG;AAC3B,UAAM,KAAK,UAAU,OAAO,EAAE;AAE9B,UAAM,kBAAkB,OAAO;AAAA,MAC7B,QAAQ,WAAW,UAAU;AAAA,QAC3B;AAAA,QACA,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC,EAAE;AAAA,IACL;AACA,WAAO,GAAG,OAAO,UAAU,EAAE,KAAK;AAAA,EACpC,SAAS,OAAP;AACA,YAAQ,MAAM,qBAAqB,KAAK;AACxC,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,oBAAoB,eAAuB,KAAa;AAC5E,QAAM,CAAC,UAAU,eAAe,IAAI,cAAc,MAAM,GAAG;AAE3D,QAAM;AAAA,IACJ,EAAE,SAAS,OAAO;AAAA,IAClB,EAAE,SAAS,KAAK;AAAA,IAChB;AAAA,MACE,SAAS;AAAA,QACP,MAAM,EAAE,IAAI;AAAA,MACd;AAAA,IACF;AAAA,IACA,EAAE,SAAS,MAAM;AAAA,IACjB,EAAE,SAAS,OAAO;AAAA,IAClB;AAAA,MACE,SAAS,EAAE,QAAQ;AAAA,IACrB;AAAA,EACF,IAAI,MAAM,QAAQ,IAAI;AAAA,IACpB,OAAO,yBAAyB;AAAA,IAChC,OAAO,uBAAuB;AAAA,IAC9B,OAAO,mBAAmB;AAAA,IAC1B,OAAO,wBAAwB;AAAA,IAC/B,OAAO,qBAAqB;AAAA,IAC5B,OAAO,kBAAkB;AAAA,EAC3B,CAAC;AAED,MAAI;AAEF,UAAM,KAAK,OAAO,MAAM,QAAQ;AAEhC,UAAM,aAAa,OAAO,GAAG;AAC7B,UAAM,YAAY,QAAQ,iBAAiB,YAAY;AAAA,MACrD;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,IACX,CAAC;AACD,WAAO,UAAU,SAAS,IAAI;AAAA,EAChC,SAAS,OAAP;AACA,YAAQ,MAAM,qBAAqB,KAAK;AACxC,UAAM;AAAA,EACR;AACF;",
6
6
  "names": ["crypto"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiny-codes/react-easy",
3
- "version": "1.4.10",
3
+ "version": "1.4.12",
4
4
  "description": "Simplify React and AntDesign development with practical components and hooks",
5
5
  "keywords": [
6
6
  "react",
@@ -41,6 +41,7 @@
41
41
  "@lexical/react": "^0.33.1",
42
42
  "@microsoft/fetch-event-source": "^2.0.1",
43
43
  "@stomp/stompjs": "^7.1.1",
44
+ "crypto-js": "^4.2.0",
44
45
  "i18next": "^24.2.3",
45
46
  "lexical": "^0.33.1",
46
47
  "react-contexify": "^6.0.0",
@@ -49,6 +50,7 @@
49
50
  "devDependencies": {
50
51
  "@tiny-codes/code-style-all-in-one": "^1.1.5",
51
52
  "@tiny-codes/eslint-plugin-react-hooks": "^4.6.0",
53
+ "@types/crypto-js": "^4.2.2",
52
54
  "@types/jest": "^29.5.14",
53
55
  "@types/node": "^22.15.32",
54
56
  "@types/react": "^19.0.12",