@allahjs/utils 0.0.1

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.
Files changed (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/browser/cookieUtils/index.cjs +100 -0
  5. package/dist/browser/cookieUtils/index.cjs.map +1 -0
  6. package/dist/browser/cookieUtils/index.d.ts +55 -0
  7. package/dist/browser/domUtils/index.cjs +237 -0
  8. package/dist/browser/domUtils/index.cjs.map +1 -0
  9. package/dist/browser/domUtils/index.d.ts +116 -0
  10. package/dist/browser/index.cjs +12 -0
  11. package/dist/browser/index.cjs.map +1 -0
  12. package/dist/browser/index.d.ts +3 -0
  13. package/dist/browser/urlUtils/index.cjs +262 -0
  14. package/dist/browser/urlUtils/index.cjs.map +1 -0
  15. package/dist/browser/urlUtils/index.d.ts +72 -0
  16. package/dist/core/arrayUtils/index.cjs +109 -0
  17. package/dist/core/arrayUtils/index.cjs.map +1 -0
  18. package/dist/core/arrayUtils/index.d.ts +67 -0
  19. package/dist/core/asyncUtils/index.cjs +180 -0
  20. package/dist/core/asyncUtils/index.cjs.map +1 -0
  21. package/dist/core/asyncUtils/index.d.ts +80 -0
  22. package/dist/core/colorUtils/index.cjs +38 -0
  23. package/dist/core/colorUtils/index.cjs.map +1 -0
  24. package/dist/core/colorUtils/index.d.ts +10 -0
  25. package/dist/core/cryptoUtils/index.cjs +428 -0
  26. package/dist/core/cryptoUtils/index.cjs.map +1 -0
  27. package/dist/core/cryptoUtils/index.d.ts +132 -0
  28. package/dist/core/dateUtils/index.cjs +245 -0
  29. package/dist/core/dateUtils/index.cjs.map +1 -0
  30. package/dist/core/dateUtils/index.d.ts +117 -0
  31. package/dist/core/index.cjs +34 -0
  32. package/dist/core/index.cjs.map +1 -0
  33. package/dist/core/index.d.ts +118 -0
  34. package/dist/core/numberUtils/index.cjs +126 -0
  35. package/dist/core/numberUtils/index.cjs.map +1 -0
  36. package/dist/core/numberUtils/index.d.ts +91 -0
  37. package/dist/core/objectUtils/index.cjs +249 -0
  38. package/dist/core/objectUtils/index.cjs.map +1 -0
  39. package/dist/core/objectUtils/index.d.ts +91 -0
  40. package/dist/core/pageUtils/index.cjs +74 -0
  41. package/dist/core/pageUtils/index.cjs.map +1 -0
  42. package/dist/core/pageUtils/index.d.ts +52 -0
  43. package/dist/core/stringUtils/index.cjs +163 -0
  44. package/dist/core/stringUtils/index.cjs.map +1 -0
  45. package/dist/core/stringUtils/index.d.ts +69 -0
  46. package/dist/core/validationUtils/index.cjs +154 -0
  47. package/dist/core/validationUtils/index.cjs.map +1 -0
  48. package/dist/core/validationUtils/index.d.ts +87 -0
  49. package/dist/esm/browser/cookieUtils/index.d.ts +55 -0
  50. package/dist/esm/browser/cookieUtils/index.js +96 -0
  51. package/dist/esm/browser/cookieUtils/index.js.map +1 -0
  52. package/dist/esm/browser/domUtils/index.d.ts +116 -0
  53. package/dist/esm/browser/domUtils/index.js +233 -0
  54. package/dist/esm/browser/domUtils/index.js.map +1 -0
  55. package/dist/esm/browser/index.d.ts +3 -0
  56. package/dist/esm/browser/index.js +4 -0
  57. package/dist/esm/browser/index.js.map +1 -0
  58. package/dist/esm/browser/urlUtils/index.d.ts +72 -0
  59. package/dist/esm/browser/urlUtils/index.js +248 -0
  60. package/dist/esm/browser/urlUtils/index.js.map +1 -0
  61. package/dist/esm/core/arrayUtils/index.d.ts +67 -0
  62. package/dist/esm/core/arrayUtils/index.js +105 -0
  63. package/dist/esm/core/arrayUtils/index.js.map +1 -0
  64. package/dist/esm/core/asyncUtils/index.d.ts +80 -0
  65. package/dist/esm/core/asyncUtils/index.js +175 -0
  66. package/dist/esm/core/asyncUtils/index.js.map +1 -0
  67. package/dist/esm/core/colorUtils/index.d.ts +10 -0
  68. package/dist/esm/core/colorUtils/index.js +34 -0
  69. package/dist/esm/core/colorUtils/index.js.map +1 -0
  70. package/dist/esm/core/cryptoUtils/index.d.ts +132 -0
  71. package/dist/esm/core/cryptoUtils/index.js +424 -0
  72. package/dist/esm/core/cryptoUtils/index.js.map +1 -0
  73. package/dist/esm/core/dateUtils/index.d.ts +117 -0
  74. package/dist/esm/core/dateUtils/index.js +241 -0
  75. package/dist/esm/core/dateUtils/index.js.map +1 -0
  76. package/dist/esm/core/index.d.ts +118 -0
  77. package/dist/esm/core/index.js +30 -0
  78. package/dist/esm/core/index.js.map +1 -0
  79. package/dist/esm/core/numberUtils/index.d.ts +91 -0
  80. package/dist/esm/core/numberUtils/index.js +122 -0
  81. package/dist/esm/core/numberUtils/index.js.map +1 -0
  82. package/dist/esm/core/objectUtils/index.d.ts +91 -0
  83. package/dist/esm/core/objectUtils/index.js +245 -0
  84. package/dist/esm/core/objectUtils/index.js.map +1 -0
  85. package/dist/esm/core/pageUtils/index.d.ts +52 -0
  86. package/dist/esm/core/pageUtils/index.js +66 -0
  87. package/dist/esm/core/pageUtils/index.js.map +1 -0
  88. package/dist/esm/core/stringUtils/index.d.ts +69 -0
  89. package/dist/esm/core/stringUtils/index.js +159 -0
  90. package/dist/esm/core/stringUtils/index.js.map +1 -0
  91. package/dist/esm/core/validationUtils/index.d.ts +87 -0
  92. package/dist/esm/core/validationUtils/index.js +150 -0
  93. package/dist/esm/core/validationUtils/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +22 -0
  95. package/dist/esm/index.js +26 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/request/ReqQueue/index.js +59 -0
  98. package/dist/esm/request/ReqQueue/index.js.map +1 -0
  99. package/dist/esm/request/httpCode/index.js +49 -0
  100. package/dist/esm/request/httpCode/index.js.map +1 -0
  101. package/dist/esm/request/httpUtils/index.js +359 -0
  102. package/dist/esm/request/httpUtils/index.js.map +1 -0
  103. package/dist/esm/request/index.d.ts +15 -0
  104. package/dist/esm/request/index.js +166 -0
  105. package/dist/esm/request/index.js.map +1 -0
  106. package/dist/esm/request/typings/index.d.ts +184 -0
  107. package/dist/esm/request/uniRequest/index.js +62 -0
  108. package/dist/esm/request/uniRequest/index.js.map +1 -0
  109. package/dist/esm/types/data/index.d.ts +188 -0
  110. package/dist/esm/types/data/index.js +13 -0
  111. package/dist/esm/types/data/index.js.map +1 -0
  112. package/dist/esm/types/index.d.ts +1 -0
  113. package/dist/esm/types/index.js +2 -0
  114. package/dist/esm/types/index.js.map +1 -0
  115. package/dist/esm/uniapp/Tips/index.d.ts +295 -0
  116. package/dist/esm/uniapp/Tips/index.js +498 -0
  117. package/dist/esm/uniapp/Tips/index.js.map +1 -0
  118. package/dist/esm/uniapp/cloudUtils/index.d.ts +56 -0
  119. package/dist/esm/uniapp/cloudUtils/index.js +90 -0
  120. package/dist/esm/uniapp/cloudUtils/index.js.map +1 -0
  121. package/dist/esm/uniapp/index.d.ts +3 -0
  122. package/dist/esm/uniapp/index.js +4 -0
  123. package/dist/esm/uniapp/index.js.map +1 -0
  124. package/dist/esm/uniapp/uniUtils/index.d.ts +113 -0
  125. package/dist/esm/uniapp/uniUtils/index.js +199 -0
  126. package/dist/esm/uniapp/uniUtils/index.js.map +1 -0
  127. package/dist/index.cjs +88 -0
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +22 -0
  130. package/dist/request/ReqQueue/index.cjs +63 -0
  131. package/dist/request/ReqQueue/index.cjs.map +1 -0
  132. package/dist/request/httpCode/index.cjs +52 -0
  133. package/dist/request/httpCode/index.cjs.map +1 -0
  134. package/dist/request/httpUtils/index.cjs +365 -0
  135. package/dist/request/httpUtils/index.cjs.map +1 -0
  136. package/dist/request/index.cjs +170 -0
  137. package/dist/request/index.cjs.map +1 -0
  138. package/dist/request/index.d.ts +15 -0
  139. package/dist/request/typings/index.d.ts +184 -0
  140. package/dist/request/uniRequest/index.cjs +66 -0
  141. package/dist/request/uniRequest/index.cjs.map +1 -0
  142. package/dist/types/data/index.cjs +15 -0
  143. package/dist/types/data/index.cjs.map +1 -0
  144. package/dist/types/data/index.d.ts +188 -0
  145. package/dist/types/index.cjs +8 -0
  146. package/dist/types/index.cjs.map +1 -0
  147. package/dist/types/index.d.ts +1 -0
  148. package/dist/uniapp/Tips/index.cjs +521 -0
  149. package/dist/uniapp/Tips/index.cjs.map +1 -0
  150. package/dist/uniapp/Tips/index.d.ts +295 -0
  151. package/dist/uniapp/cloudUtils/index.cjs +92 -0
  152. package/dist/uniapp/cloudUtils/index.cjs.map +1 -0
  153. package/dist/uniapp/cloudUtils/index.d.ts +56 -0
  154. package/dist/uniapp/index.cjs +53 -0
  155. package/dist/uniapp/index.cjs.map +1 -0
  156. package/dist/uniapp/index.d.ts +3 -0
  157. package/dist/uniapp/uniUtils/index.cjs +213 -0
  158. package/dist/uniapp/uniUtils/index.cjs.map +1 -0
  159. package/dist/uniapp/uniUtils/index.d.ts +113 -0
  160. package/package.json +129 -0
@@ -0,0 +1,428 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var CryptoJS = require('crypto-js');
6
+
7
+ /**
8
+ * 检测是否为浏览器环境
9
+ * @returns {boolean} 如果是浏览器环境返回 true,否则返回 false
10
+ */
11
+ function isBrowser() {
12
+ return typeof window !== 'undefined' && typeof window.document !== 'undefined';
13
+ }
14
+ /**
15
+ * 动态导入 uuid 模块
16
+ * @returns {Promise<any>} 返回 uuid 模块的 Promise
17
+ */
18
+ async function loadUUID() {
19
+ try {
20
+ // 动态导入 uuid 模块以解决 CommonJS/ESM 兼容性问题
21
+ const uuid = await import('uuid');
22
+ return uuid;
23
+ }
24
+ catch (error) {
25
+ throw new Error(`加载 uuid 模块失败: ${error}`);
26
+ }
27
+ }
28
+ /**
29
+ * 检测是否支持 crypto.getRandomValues
30
+ * @returns {boolean} 如果支持返回 true,否则返回 false
31
+ */
32
+ function supportsCryptoGetRandomValues() {
33
+ return typeof crypto !== 'undefined' &&
34
+ typeof crypto.getRandomValues === 'function';
35
+ }
36
+ /**
37
+ * 生成兼容性的随机字节数组
38
+ * @param {number} size - 需要生成的字节数
39
+ * @returns {Uint8Array} 随机字节数组
40
+ */
41
+ function getRandomBytes(size) {
42
+ const bytes = new Uint8Array(size);
43
+ // 优先使用 crypto.getRandomValues(现代浏览器和 Node.js)
44
+ if (supportsCryptoGetRandomValues()) {
45
+ crypto.getRandomValues(bytes);
46
+ return bytes;
47
+ }
48
+ // 降级方案:使用 Math.random()
49
+ for (let i = 0; i < size; i++) {
50
+ bytes[i] = Math.floor(Math.random() * 256);
51
+ }
52
+ return bytes;
53
+ }
54
+ /**
55
+ * 生成兼容性的 UUID v4
56
+ * 当 crypto.getRandomValues 不可用时使用降级方案
57
+ * @returns {string} UUID v4 字符串
58
+ */
59
+ function generateCompatibleUUID() {
60
+ const bytes = getRandomBytes(16);
61
+ // 设置版本号 (4) 和变体位
62
+ bytes[6] = (bytes[6] & 0x0f) | 0x40; // 版本 4
63
+ bytes[8] = (bytes[8] & 0x3f) | 0x80; // 变体位
64
+ // 转换为十六进制字符串
65
+ const hex = Array.from(bytes)
66
+ .map(b => b.toString(16).padStart(2, '0'))
67
+ .join('');
68
+ // 格式化为标准 UUID 格式
69
+ return [
70
+ hex.slice(0, 8),
71
+ hex.slice(8, 12),
72
+ hex.slice(12, 16),
73
+ hex.slice(16, 20),
74
+ hex.slice(20, 32)
75
+ ].join('-');
76
+ }
77
+ /**
78
+ * 延迟加载 JSEncrypt(仅在浏览器环境中)
79
+ * @returns {Promise<any>} 返回 JSEncrypt 类的 Promise
80
+ */
81
+ async function loadJSEncrypt() {
82
+ if (!isBrowser()) {
83
+ throw new Error('JSEncrypt 只能在浏览器环境中使用');
84
+ }
85
+ try {
86
+ // 动态导入 JSEncrypt
87
+ const { default: JSEncrypt } = await import('jsencrypt');
88
+ return JSEncrypt;
89
+ }
90
+ catch (error) {
91
+ throw new Error(`加载 JSEncrypt 失败: ${error}`);
92
+ }
93
+ }
94
+ /**
95
+ * 延迟加载 Node.js crypto 模块(仅在 Node.js 环境中)
96
+ * @returns {Promise<any>} 返回 crypto 模块的 Promise
97
+ */
98
+ async function loadNodeCrypto() {
99
+ if (isBrowser()) {
100
+ throw new Error('Node.js crypto 模块只能在 Node.js 环境中使用');
101
+ }
102
+ try {
103
+ // 动态导入 Node.js crypto 模块
104
+ const crypto = await import('crypto');
105
+ return crypto;
106
+ }
107
+ catch (error) {
108
+ throw new Error(`加载 Node.js crypto 模块失败: ${error}`);
109
+ }
110
+ }
111
+ /**
112
+ * Node.js 环境下的 RSA 加密
113
+ * @param {string} text - 需要加密的文本
114
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
115
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
116
+ */
117
+ async function rsaEncryptNode(text, publicKey) {
118
+ try {
119
+ const crypto = await loadNodeCrypto();
120
+ const buffer = Buffer.from(text, 'utf8');
121
+ const encrypted = crypto.publicEncrypt(publicKey, buffer);
122
+ return encrypted.toString('base64');
123
+ }
124
+ catch (error) {
125
+ console.error('Node.js RSA 加密失败:', error);
126
+ return false;
127
+ }
128
+ }
129
+ /**
130
+ * Node.js 环境下的 RSA 解密
131
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
132
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
133
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
134
+ */
135
+ async function rsaDecryptNode(encryptedText, privateKey) {
136
+ try {
137
+ const crypto = await loadNodeCrypto();
138
+ const buffer = Buffer.from(encryptedText, 'base64');
139
+ const decrypted = crypto.privateDecrypt(privateKey, buffer);
140
+ return decrypted.toString('utf8');
141
+ }
142
+ catch (error) {
143
+ console.error('Node.js RSA 解密失败:', error);
144
+ return false;
145
+ }
146
+ }
147
+ /**
148
+ * Node.js 环境下生成 RSA 密钥对
149
+ * @param {number} keySize - 密钥长度
150
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
151
+ */
152
+ async function generateRSAKeyPairNode(keySize) {
153
+ try {
154
+ const crypto = await loadNodeCrypto();
155
+ const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
156
+ modulusLength: keySize,
157
+ publicKeyEncoding: {
158
+ type: 'spki',
159
+ format: 'pem'
160
+ },
161
+ privateKeyEncoding: {
162
+ type: 'pkcs8',
163
+ format: 'pem'
164
+ }
165
+ });
166
+ return { publicKey, privateKey };
167
+ }
168
+ catch (error) {
169
+ console.error('Node.js RSA 密钥对生成失败:', error);
170
+ return null;
171
+ }
172
+ }
173
+ /**
174
+ * 浏览器环境下的 RSA 加密
175
+ * @param {string} text - 需要加密的文本
176
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
177
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
178
+ */
179
+ async function rsaEncryptBrowser(text, publicKey) {
180
+ try {
181
+ const JSEncrypt = await loadJSEncrypt();
182
+ const encrypt = new JSEncrypt();
183
+ encrypt.setPublicKey(publicKey);
184
+ return encrypt.encrypt(text);
185
+ }
186
+ catch (error) {
187
+ console.error('浏览器 RSA 加密失败:', error);
188
+ return false;
189
+ }
190
+ }
191
+ /**
192
+ * 浏览器环境下的 RSA 解密
193
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
194
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
195
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
196
+ */
197
+ async function rsaDecryptBrowser(encryptedText, privateKey) {
198
+ try {
199
+ const JSEncrypt = await loadJSEncrypt();
200
+ const decrypt = new JSEncrypt();
201
+ decrypt.setPrivateKey(privateKey);
202
+ return decrypt.decrypt(encryptedText);
203
+ }
204
+ catch (error) {
205
+ console.error('浏览器 RSA 解密失败:', error);
206
+ return false;
207
+ }
208
+ }
209
+ /**
210
+ * 浏览器环境下生成 RSA 密钥对
211
+ * @param {number} keySize - 密钥长度
212
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
213
+ */
214
+ async function generateRSAKeyPairBrowser(keySize) {
215
+ try {
216
+ const JSEncrypt = await loadJSEncrypt();
217
+ const encrypt = new JSEncrypt({ default_key_size: keySize.toString() });
218
+ return {
219
+ publicKey: encrypt.getPublicKey(),
220
+ privateKey: encrypt.getPrivateKey()
221
+ };
222
+ }
223
+ catch (error) {
224
+ console.error('浏览器 RSA 密钥对生成失败:', error);
225
+ return null;
226
+ }
227
+ }
228
+ /**
229
+ * 加密工具类
230
+ * 提供 UUID 生成、MD5 哈希、RSA 加密解密、AES 对称加密等功能
231
+ */
232
+ const cryptoUtils = {
233
+ /**
234
+ * 生成 UUID v4
235
+ * @returns {Promise<string>} 返回一个随机生成的 UUID v4 字符串
236
+ * @example
237
+ * ```typescript
238
+ * const uuid = await cryptoUtils.uuid();
239
+ * console.log(uuid); // "550e8400e29b41d4a716446655440000"
240
+ * ```
241
+ */
242
+ async uuid() {
243
+ try {
244
+ // 优先尝试使用 uuid 库
245
+ if (supportsCryptoGetRandomValues()) {
246
+ const { v4: uuidv4 } = await loadUUID();
247
+ return uuidv4().replace(/-/g, '');
248
+ }
249
+ // 在不支持 crypto.getRandomValues 的环境中使用兼容性方案
250
+ console.warn('crypto.getRandomValues 不可用,使用兼容性 UUID 生成方案');
251
+ return generateCompatibleUUID().replace(/-/g, '');
252
+ }
253
+ catch (error) {
254
+ // 如果 uuid 库加载失败,也使用兼容性方案
255
+ console.warn('UUID 库加载失败,使用兼容性 UUID 生成方案:', error);
256
+ return generateCompatibleUUID().replace(/-/g, '');
257
+ }
258
+ },
259
+ /**
260
+ * 生成字符串的 MD5 哈希值
261
+ * @param {string} input - 需要进行 MD5 加密的输入字符串
262
+ * @param {string} [salt] - 可选的盐值,用于增强安全性
263
+ * @returns {string} 返回 MD5 哈希值的十六进制字符串
264
+ * @example
265
+ * ```typescript
266
+ * // 基础 MD5
267
+ * const hash1 = cryptoUtils.md5('hello world');
268
+ * console.log(hash1); // "5d41402abc4b2a76b9719d911017c592"
269
+ *
270
+ * // 带盐值的 MD5
271
+ * const hash2 = cryptoUtils.md5('password', 'mysalt');
272
+ * console.log(hash2); // "a1b2c3d4e5f6..."
273
+ * ```
274
+ */
275
+ md5(input, salt) {
276
+ const data = salt ? input + salt : input;
277
+ return CryptoJS.MD5(data).toString();
278
+ },
279
+ /**
280
+ * 生成简短的 UUID(8位)
281
+ * @returns {string} 返回一个8位的短 UUID 字符串
282
+ * @example
283
+ * ```typescript
284
+ * const shortUuid = cryptoUtils.miniUuid();
285
+ * console.log(shortUuid); // "a1b2c3d4"
286
+ * ```
287
+ */
288
+ miniUuid() {
289
+ return Math.random().toString(36).substring(2, 10);
290
+ },
291
+ /**
292
+ * 验证 UUID 格式是否正确
293
+ * @param {string} uuid - 需要验证的 UUID 字符串
294
+ * @returns {Promise<boolean>} 如果格式正确返回 true,否则返回 false
295
+ * @example
296
+ * ```typescript
297
+ * const isValid = await cryptoUtils.isValidUUID('550e8400-e29b-41d4-a716-446655440000');
298
+ * console.log(isValid); // true
299
+ * ```
300
+ */
301
+ async isValidUUID(uuid) {
302
+ try {
303
+ const { validate: validateUUID } = await loadUUID();
304
+ return validateUUID(uuid);
305
+ }
306
+ catch (error) {
307
+ console.warn(`UUID 库加载失败:${error}`);
308
+ // 如果 uuid 库不可用,使用正则表达式验证
309
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
310
+ return uuidRegex.test(uuid);
311
+ }
312
+ },
313
+ /**
314
+ * RSA 加密(跨环境兼容)
315
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
316
+ * @param {string} text - 需要加密的文本
317
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
318
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
319
+ * @example
320
+ * ```typescript
321
+ * const publicKey = `-----BEGIN PUBLIC KEY-----
322
+ * MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o...
323
+ * -----END PUBLIC KEY-----`;
324
+ *
325
+ * const encrypted = await cryptoUtils.rsaEncrypt('Hello World', publicKey);
326
+ * console.log(encrypted); // "base64 encrypted string"
327
+ * ```
328
+ */
329
+ async rsaEncrypt(text, publicKey) {
330
+ if (isBrowser()) {
331
+ return await rsaEncryptBrowser(text, publicKey);
332
+ }
333
+ return await rsaEncryptNode(text, publicKey);
334
+ },
335
+ /**
336
+ * RSA 解密(跨环境兼容)
337
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
338
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
339
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
340
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
341
+ * @example
342
+ * ```typescript
343
+ * const privateKey = `-----BEGIN PRIVATE KEY-----
344
+ * MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL...
345
+ * -----END PRIVATE KEY-----`;
346
+ *
347
+ * const decrypted = await cryptoUtils.rsaDecrypt(encryptedText, privateKey);
348
+ * console.log(decrypted); // "Hello World"
349
+ * ```
350
+ */
351
+ async rsaDecrypt(encryptedText, privateKey) {
352
+ if (isBrowser()) {
353
+ return await rsaDecryptBrowser(encryptedText, privateKey);
354
+ }
355
+ return await rsaDecryptNode(encryptedText, privateKey);
356
+ },
357
+ /**
358
+ * 生成 RSA 密钥对(跨环境兼容)
359
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
360
+ * @param {number} [keySize=1024] - 密钥长度,默认 1024 位
361
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
362
+ * @example
363
+ * ```typescript
364
+ * const keyPair = await cryptoUtils.generateRSAKeyPair(2048);
365
+ * if (keyPair) {
366
+ * console.log(keyPair.publicKey); // "-----BEGIN PUBLIC KEY-----..."
367
+ * console.log(keyPair.privateKey); // "-----BEGIN PRIVATE KEY-----..."
368
+ * }
369
+ * ```
370
+ */
371
+ async generateRSAKeyPair(keySize = 1024) {
372
+ if (isBrowser()) {
373
+ return await generateRSAKeyPairBrowser(keySize);
374
+ }
375
+ return await generateRSAKeyPairNode(keySize);
376
+ },
377
+ /**
378
+ * AES 加密(使用字符串密钥)
379
+ * @param {string} text - 需要加密的文本
380
+ * @param {string} key - 加密密钥(字符串)
381
+ * @returns {string} 返回加密后的文本(包含 IV 和密文)
382
+ * @example
383
+ * ```typescript
384
+ * const encrypted = cryptoUtils.aesEncrypt('Hello World', 'mySecretKey123');
385
+ * console.log(encrypted); // "iv:ciphertext"
386
+ * ```
387
+ */
388
+ aesEncrypt(text, key) {
389
+ try {
390
+ // 使用 CryptoJS 进行 AES 加密
391
+ const encrypted = CryptoJS.AES.encrypt(text, key).toString();
392
+ return encrypted;
393
+ }
394
+ catch (error) {
395
+ console.error('AES 加密失败:', error);
396
+ throw new Error('AES 加密失败');
397
+ }
398
+ },
399
+ /**
400
+ * AES 解密(使用字符串密钥)
401
+ * @param {string} encryptedText - 需要解密的文本(包含 IV 和密文)
402
+ * @param {string} key - 解密密钥(字符串)
403
+ * @returns {string} 返回解密后的原文
404
+ * @example
405
+ * ```typescript
406
+ * const decrypted = cryptoUtils.aesDecrypt(encryptedText, 'mySecretKey123');
407
+ * console.log(decrypted); // "Hello World"
408
+ * ```
409
+ */
410
+ aesDecrypt(encryptedText, key) {
411
+ try {
412
+ // 使用 CryptoJS 进行 AES 解密
413
+ const decrypted = CryptoJS.AES.decrypt(encryptedText, key);
414
+ const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
415
+ if (!decryptedText) {
416
+ throw new Error('解密失败,可能是密钥错误或数据损坏');
417
+ }
418
+ return decryptedText;
419
+ }
420
+ catch (error) {
421
+ console.error('AES 解密失败:', error);
422
+ throw new Error('AES 解密失败');
423
+ }
424
+ }
425
+ };
426
+
427
+ exports.default = cryptoUtils;
428
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/core/cryptoUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * 加密工具类
3
+ * 提供 UUID 生成、MD5 哈希、RSA 加密解密、AES 对称加密等功能
4
+ */
5
+ declare const cryptoUtils: {
6
+ /**
7
+ * 生成 UUID v4
8
+ * @returns {Promise<string>} 返回一个随机生成的 UUID v4 字符串
9
+ * @example
10
+ * ```typescript
11
+ * const uuid = await cryptoUtils.uuid();
12
+ * console.log(uuid); // "550e8400e29b41d4a716446655440000"
13
+ * ```
14
+ */
15
+ uuid(): Promise<string>;
16
+ /**
17
+ * 生成字符串的 MD5 哈希值
18
+ * @param {string} input - 需要进行 MD5 加密的输入字符串
19
+ * @param {string} [salt] - 可选的盐值,用于增强安全性
20
+ * @returns {string} 返回 MD5 哈希值的十六进制字符串
21
+ * @example
22
+ * ```typescript
23
+ * // 基础 MD5
24
+ * const hash1 = cryptoUtils.md5('hello world');
25
+ * console.log(hash1); // "5d41402abc4b2a76b9719d911017c592"
26
+ *
27
+ * // 带盐值的 MD5
28
+ * const hash2 = cryptoUtils.md5('password', 'mysalt');
29
+ * console.log(hash2); // "a1b2c3d4e5f6..."
30
+ * ```
31
+ */
32
+ md5(input: string, salt?: string): string;
33
+ /**
34
+ * 生成简短的 UUID(8位)
35
+ * @returns {string} 返回一个8位的短 UUID 字符串
36
+ * @example
37
+ * ```typescript
38
+ * const shortUuid = cryptoUtils.miniUuid();
39
+ * console.log(shortUuid); // "a1b2c3d4"
40
+ * ```
41
+ */
42
+ miniUuid(): string;
43
+ /**
44
+ * 验证 UUID 格式是否正确
45
+ * @param {string} uuid - 需要验证的 UUID 字符串
46
+ * @returns {Promise<boolean>} 如果格式正确返回 true,否则返回 false
47
+ * @example
48
+ * ```typescript
49
+ * const isValid = await cryptoUtils.isValidUUID('550e8400-e29b-41d4-a716-446655440000');
50
+ * console.log(isValid); // true
51
+ * ```
52
+ */
53
+ isValidUUID(uuid: string): Promise<boolean>;
54
+ /**
55
+ * RSA 加密(跨环境兼容)
56
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
57
+ * @param {string} text - 需要加密的文本
58
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
59
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
60
+ * @example
61
+ * ```typescript
62
+ * const publicKey = `-----BEGIN PUBLIC KEY-----
63
+ * MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o...
64
+ * -----END PUBLIC KEY-----`;
65
+ *
66
+ * const encrypted = await cryptoUtils.rsaEncrypt('Hello World', publicKey);
67
+ * console.log(encrypted); // "base64 encrypted string"
68
+ * ```
69
+ */
70
+ rsaEncrypt(text: string, publicKey: string): Promise<string | false>;
71
+ /**
72
+ * RSA 解密(跨环境兼容)
73
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
74
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
75
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
76
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
77
+ * @example
78
+ * ```typescript
79
+ * const privateKey = `-----BEGIN PRIVATE KEY-----
80
+ * MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL...
81
+ * -----END PRIVATE KEY-----`;
82
+ *
83
+ * const decrypted = await cryptoUtils.rsaDecrypt(encryptedText, privateKey);
84
+ * console.log(decrypted); // "Hello World"
85
+ * ```
86
+ */
87
+ rsaDecrypt(encryptedText: string, privateKey: string): Promise<string | false>;
88
+ /**
89
+ * 生成 RSA 密钥对(跨环境兼容)
90
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
91
+ * @param {number} [keySize=1024] - 密钥长度,默认 1024 位
92
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
93
+ * @example
94
+ * ```typescript
95
+ * const keyPair = await cryptoUtils.generateRSAKeyPair(2048);
96
+ * if (keyPair) {
97
+ * console.log(keyPair.publicKey); // "-----BEGIN PUBLIC KEY-----..."
98
+ * console.log(keyPair.privateKey); // "-----BEGIN PRIVATE KEY-----..."
99
+ * }
100
+ * ```
101
+ */
102
+ generateRSAKeyPair(keySize?: number): Promise<{
103
+ publicKey: string;
104
+ privateKey: string;
105
+ } | null>;
106
+ /**
107
+ * AES 加密(使用字符串密钥)
108
+ * @param {string} text - 需要加密的文本
109
+ * @param {string} key - 加密密钥(字符串)
110
+ * @returns {string} 返回加密后的文本(包含 IV 和密文)
111
+ * @example
112
+ * ```typescript
113
+ * const encrypted = cryptoUtils.aesEncrypt('Hello World', 'mySecretKey123');
114
+ * console.log(encrypted); // "iv:ciphertext"
115
+ * ```
116
+ */
117
+ aesEncrypt(text: string, key: string): string;
118
+ /**
119
+ * AES 解密(使用字符串密钥)
120
+ * @param {string} encryptedText - 需要解密的文本(包含 IV 和密文)
121
+ * @param {string} key - 解密密钥(字符串)
122
+ * @returns {string} 返回解密后的原文
123
+ * @example
124
+ * ```typescript
125
+ * const decrypted = cryptoUtils.aesDecrypt(encryptedText, 'mySecretKey123');
126
+ * console.log(decrypted); // "Hello World"
127
+ * ```
128
+ */
129
+ aesDecrypt(encryptedText: string, key: string): string;
130
+ };
131
+
132
+ export { cryptoUtils as default };