@maiyunnet/kebab 3.2.7 → 3.2.8
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/index.d.ts +1 -1
- package/index.js +1 -1
- package/lib/crypto.d.ts +7 -3
- package/lib/crypto.js +15 -11
- package/package.json +1 -1
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* --- 本文件用来定义每个目录实体地址的常量 ---
|
|
7
7
|
*/
|
|
8
8
|
/** --- 当前系统版本号 --- */
|
|
9
|
-
export const VER = '3.2.
|
|
9
|
+
export const VER = '3.2.8';
|
|
10
10
|
// --- 服务端用的路径 ---
|
|
11
11
|
const imu = decodeURIComponent(import.meta.url).replace('file://', '').replace(/^\/(\w:)/, '$1');
|
|
12
12
|
/** --- /xxx/xxx --- */
|
package/lib/crypto.d.ts
CHANGED
|
@@ -58,9 +58,13 @@ export declare function publicDecrypt(key: crypto.RsaPublicKey | crypto.RsaPriva
|
|
|
58
58
|
* @param buffer 数据
|
|
59
59
|
*/
|
|
60
60
|
export declare function privateDecrypt(key: crypto.RsaPrivateKey | crypto.KeyLike, buffer: NodeJS.ArrayBufferView | string): Buffer;
|
|
61
|
+
/** --- 勿使用,无 iv 默认,但勿使用 --- */
|
|
61
62
|
export declare const AES_256_ECB = "aes-256-ecb";
|
|
63
|
+
/** --- 一般不用,兼容性场景下用 --- */
|
|
62
64
|
export declare const AES_256_CBC = "aes-256-cbc";
|
|
63
|
-
|
|
65
|
+
/** --- 设置 iv 会自动切换为 CTR,流式下使用,非流直接使用 GCM --- */
|
|
66
|
+
export declare const AES_256_CTR = "aes-256-ctr";
|
|
67
|
+
/** --- 非流直接使用 GCM --- */
|
|
64
68
|
export declare const AES_256_GCM = "aes-256-gcm";
|
|
65
69
|
export declare const SM4_ECB = "sm4-ecb";
|
|
66
70
|
export declare const SM4_CBC = "sm4-cbc";
|
|
@@ -69,7 +73,7 @@ export declare const SM4_CFB = "sm4-cfb";
|
|
|
69
73
|
* --- cipher 加密,强烈不建议使用 AES_256_ECB ---
|
|
70
74
|
* @param original 原始字符串
|
|
71
75
|
* @param key 密钥 32 个英文字母和数字
|
|
72
|
-
* @param iv 向量 16(
|
|
76
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
73
77
|
* @param method 加密方法
|
|
74
78
|
*/
|
|
75
79
|
export declare function cipherEncrypt(original: string | Buffer, key: crypto.CipherKey, iv?: string, method?: string, output?: 'base64' | 'buffer'): string | Buffer | false;
|
|
@@ -83,7 +87,7 @@ export declare function sm4Encrypt(original: string | Buffer, key: crypto.Cipher
|
|
|
83
87
|
* --- cipher 解密 ---
|
|
84
88
|
* @param encrypt 需解密的字符串
|
|
85
89
|
* @param key 密钥 32 个英文字母和数字
|
|
86
|
-
* @param iv 向量 16(
|
|
90
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
87
91
|
* @param method 加密方法
|
|
88
92
|
*/
|
|
89
93
|
export declare function cipherDecrypt(encrypt: string | Buffer, key: crypto.CipherKey, iv?: string, method?: string, output?: 'binary' | 'buffer'): string | Buffer | false;
|
package/lib/crypto.js
CHANGED
|
@@ -96,10 +96,14 @@ export function privateDecrypt(key, buffer) {
|
|
|
96
96
|
return crypto.privateDecrypt(key, buffer);
|
|
97
97
|
}
|
|
98
98
|
// --- Cipher (AES/SM4...) 加/解密 ---
|
|
99
|
-
|
|
99
|
+
/** --- 勿使用,无 iv 默认,但勿使用 --- */
|
|
100
|
+
export const AES_256_ECB = 'aes-256-ecb';
|
|
101
|
+
/** --- 一般不用,兼容性场景下用 --- */
|
|
100
102
|
export const AES_256_CBC = 'aes-256-cbc';
|
|
101
|
-
|
|
102
|
-
export const
|
|
103
|
+
/** --- 设置 iv 会自动切换为 CTR,流式下使用,非流直接使用 GCM --- */
|
|
104
|
+
export const AES_256_CTR = 'aes-256-ctr';
|
|
105
|
+
/** --- 非流直接使用 GCM --- */
|
|
106
|
+
export const AES_256_GCM = 'aes-256-gcm';
|
|
103
107
|
export const SM4_ECB = 'sm4-ecb'; // --- SM4 如果未设置 iv,则默认这个 ---
|
|
104
108
|
export const SM4_CBC = 'sm4-cbc';
|
|
105
109
|
export const SM4_CFB = 'sm4-cfb'; // --- SM4 一般用这个,设置 iv,自动就切换成了这个 ---
|
|
@@ -107,7 +111,7 @@ export const SM4_CFB = 'sm4-cfb'; // --- SM4 一般用这个,设置 iv,自
|
|
|
107
111
|
* --- cipher 加密,强烈不建议使用 AES_256_ECB ---
|
|
108
112
|
* @param original 原始字符串
|
|
109
113
|
* @param key 密钥 32 个英文字母和数字
|
|
110
|
-
* @param iv 向量 16(
|
|
114
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
111
115
|
* @param method 加密方法
|
|
112
116
|
*/
|
|
113
117
|
export function cipherEncrypt(original, key, iv = '', method = AES_256_ECB, output = 'base64') {
|
|
@@ -116,7 +120,7 @@ export function cipherEncrypt(original, key, iv = '', method = AES_256_ECB, outp
|
|
|
116
120
|
key = hashHmac('md5', key, 'MaiyunSalt');
|
|
117
121
|
}
|
|
118
122
|
if (iv) {
|
|
119
|
-
if (method ===
|
|
123
|
+
if (method === AES_256_CTR) {
|
|
120
124
|
if (iv.length !== 16) {
|
|
121
125
|
return false;
|
|
122
126
|
}
|
|
@@ -165,13 +169,13 @@ export function cipherEncrypt(original, key, iv = '', method = AES_256_ECB, outp
|
|
|
165
169
|
* --- AES 加密 ---
|
|
166
170
|
* @param original 原始字符串
|
|
167
171
|
* @param key 密钥尽量 32 个英文字母和数字,不是 32 个系统会自动处理
|
|
168
|
-
* @param iv 向量 16 个英文字母和数字
|
|
172
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
169
173
|
* @param method 加密方法
|
|
170
174
|
* @param output 输出类型
|
|
171
175
|
*/
|
|
172
176
|
export function aesEncrypt(original, key, iv = '', method = AES_256_ECB, output = 'base64') {
|
|
173
177
|
if (iv !== '') {
|
|
174
|
-
method = method === AES_256_ECB ?
|
|
178
|
+
method = method === AES_256_ECB ? AES_256_CTR : method;
|
|
175
179
|
}
|
|
176
180
|
return cipherEncrypt(original, key, iv, method, output);
|
|
177
181
|
}
|
|
@@ -206,7 +210,7 @@ export function sm4Encrypt(original, key, iv = '', method = SM4_ECB, output = 'b
|
|
|
206
210
|
* --- cipher 解密 ---
|
|
207
211
|
* @param encrypt 需解密的字符串
|
|
208
212
|
* @param key 密钥 32 个英文字母和数字
|
|
209
|
-
* @param iv 向量 16(
|
|
213
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
210
214
|
* @param method 加密方法
|
|
211
215
|
*/
|
|
212
216
|
export function cipherDecrypt(encrypt, key, iv = '', method = AES_256_ECB, output = 'binary') {
|
|
@@ -215,7 +219,7 @@ export function cipherDecrypt(encrypt, key, iv = '', method = AES_256_ECB, outpu
|
|
|
215
219
|
key = hashHmac('md5', key, 'MaiyunSalt');
|
|
216
220
|
}
|
|
217
221
|
if (iv) {
|
|
218
|
-
if (method ===
|
|
222
|
+
if (method === AES_256_CTR) {
|
|
219
223
|
if (iv.length !== 16) {
|
|
220
224
|
return false;
|
|
221
225
|
}
|
|
@@ -268,12 +272,12 @@ export function cipherDecrypt(encrypt, key, iv = '', method = AES_256_ECB, outpu
|
|
|
268
272
|
* --- AES 解密 ---
|
|
269
273
|
* @param encrypt 需解密的字符串
|
|
270
274
|
* @param key 密钥 32 个英文字母和数字
|
|
271
|
-
* @param iv 向量 16 个英文字母和数字
|
|
275
|
+
* @param iv 向量 16(CTR) 或 12(GCM) 个英文字母和数字
|
|
272
276
|
* @param method 加密方法
|
|
273
277
|
*/
|
|
274
278
|
export function aesDecrypt(encrypt, key, iv = '', method = AES_256_ECB, output = 'binary') {
|
|
275
279
|
if (iv !== '') {
|
|
276
|
-
method = method === AES_256_ECB ?
|
|
280
|
+
method = method === AES_256_ECB ? AES_256_CTR : method;
|
|
277
281
|
}
|
|
278
282
|
return cipherDecrypt(encrypt, key, iv, method, output);
|
|
279
283
|
}
|