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