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.
- package/lib/CryptoJS/HttpRequest.js +19 -24
- package/package.json +1 -1
|
@@ -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
|
|
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
|
|
111
|
-
const hashData = sm3(
|
|
112
|
-
const keyHex = md5_32(
|
|
113
|
-
const ivHex = md5_32(
|
|
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,
|