dream-common 1.1.45 → 1.1.47

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.
@@ -42,23 +42,14 @@ export function createSecureData(request = {}) {
42
42
  */
43
43
  export function encryptSecureData(request = {}, privateKey, useBase64 = true) {
44
44
  // 1. 生成签名原文(排除 encData, signData, data)
45
- const signSource = objectToSignString(request, 'encData', 'signData', 'data');
46
- // 2. SM2 签名(DER 格式,与 Java Bouncy Castle 兼容)
47
- const signValueStr = sm2.doSignature(signSource, privateKey, {
48
- der: true
49
- }).toLowerCase();
50
-
51
- const signValue = useBase64 ? hexToBase64(signValueStr) : signValueStr;
52
- // 3. 生成 SM4 密钥和 IV(通过 MD5)
53
- const hashData = sm3(signValue) // 杂凑
54
- const keyHex = md5_32(signValue + hashData); // 32 hex → 16 bytes
55
- const ivHex = md5_32(signSource + keyHex + hashData); // 32 hex → 16 bytes
56
- console.log("hashData: " + hashData);
57
- console.log("keyHex: " + keyHex);
58
- console.log("ivHex: " + ivHex);
45
+ const queryStr = objectToSignString(request, 'encData', 'signData', 'data');
59
46
  // 4. 序列化业务数据
60
47
  const dataJson = typeof request.data === 'string' ? request.data : JSON.stringify(request.data);
61
48
 
49
+ // 3. 生成 SM4 密钥和 IV(通过 MD5)
50
+ const hashData = sm3(queryStr) // 杂凑
51
+ const keyHex = md5_32(queryStr + hashData); // 32 hex → 16 bytes
52
+ const ivHex = md5_32(queryStr + keyHex + hashData); // 32 hex → 16 bytes
62
53
  // 5. SM4 加密(CBC + PKCS#7)
63
54
  const encDataHex = sm4.encrypt(dataJson, keyHex, {
64
55
  iv: ivHex,
@@ -66,9 +57,18 @@ export function encryptSecureData(request = {}, privateKey, useBase64 = true) {
66
57
  padding: 'pkcs#7',
67
58
  cipherType: 1, // hex output
68
59
  });
69
-
70
60
  // 6. 转换为最终格式(hex 或 base64)
71
61
  const encData = useBase64 ? hexToBase64(encDataHex) : encDataHex;
62
+ request.encData = encData;
63
+ const signSource = objectToSignString(request, 'signData', 'data');
64
+ // 2. SM2 签名(DER 格式,与 Java Bouncy Castle 兼容)
65
+ const signValueStr = sm2.doSignature(signSource, privateKey, {
66
+ der: true
67
+ }).toLowerCase();
68
+ const signValue = useBase64 ? hexToBase64(signValueStr) : signValueStr;
69
+
70
+
71
+
72
72
 
73
73
  // 7. 返回可传输对象(移除 data)
74
74
  const {
@@ -107,17 +107,12 @@ export function verifySecureSign(request, publicKey, useBase64 = true) {
107
107
  */
108
108
  export function decryptSecureData(request, privateKey, useBase64 = true) {
109
109
  // 1. 重算签名原文(用于生成 key/iv)
110
- const signSource = objectToSignString(request, 'encData', 'signData', 'data');
111
- const hashData = sm3(signValue) // 杂凑
112
- const keyHex = md5_32(signValue + hashData); // 32 hex → 16 bytes
113
- const ivHex = md5_32(signSource + keyHex + hashData); // 32 hex → 16 bytes
114
- console.log("sm3: " + hashData);
115
- console.log("keyHex: " + keyHex);
116
- console.log("ivHex: " + ivHex);
110
+ const queryStr = objectToSignString(request, 'encData', 'signData', 'data');
111
+ const hashData = sm3(queryStr) // 杂凑
112
+ const keyHex = md5_32(queryStr + hashData); // 32 hex → 16 bytes
113
+ const ivHex = md5_32(queryStr + keyHex + hashData); // 32 hex → 16 bytes
117
114
  // 3. 处理 encData(base64 → hex)
118
-
119
115
  const encDataHex = useBase64 ? base64ToHex(request.encData) : request.encData;
120
-
121
116
  // 4. SM4 解密
122
117
  const decrypted = sm4.decrypt(encDataHex, keyHax, {
123
118
  iv: lvHax,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dream-common",
3
- "version": "1.1.45",
3
+ "version": "1.1.47",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {