parsec-libs 0.0.224-ertong → 0.0.226-ertong
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/CHANGELOG.md +20 -0
- package/lib/twoWayReferral/apis.js +3 -1
- package/lib/utils/aes.d.ts +2 -0
- package/lib/utils/aes.js +75 -0
- package/package.json +2 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org).
|
|
7
|
+
|
|
8
|
+
## [ertong-v0.0.225] - 2025-06-19
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- 查询转诊详情接口 id 使用 AES 加密
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- 版本号 0.0.225-ertong
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- aes 加密模式切换为 ceb
|
|
@@ -15,6 +15,8 @@ var _createApiHooks = _interopRequireDefault(require("create-api-hooks"));
|
|
|
15
15
|
|
|
16
16
|
var _parsecAdmin = require("parsec-admin");
|
|
17
17
|
|
|
18
|
+
var _aes = require("../utils/aes");
|
|
19
|
+
|
|
18
20
|
var _default = {
|
|
19
21
|
转诊列表: (0, _createApiHooks.default)(function (params) {
|
|
20
22
|
return _parsecAdmin.request.get('/ch-referral-center/api/doctor/referral/page', {
|
|
@@ -61,7 +63,7 @@ var _default = {
|
|
|
61
63
|
查询转诊详情: (0, _createApiHooks.default)(function (_ref) {
|
|
62
64
|
var id = _ref.id,
|
|
63
65
|
headers = (0, _objectWithoutProperties2.default)(_ref, ["id"]);
|
|
64
|
-
return _parsecAdmin.request.get("/ch-referral-center/api/mch/referral/get/detail/".concat(id), {
|
|
66
|
+
return _parsecAdmin.request.get("/ch-referral-center/api/mch/referral/get/detail/".concat((0, _aes.encryptAES)("".concat(id))), {
|
|
65
67
|
headers: headers
|
|
66
68
|
});
|
|
67
69
|
}),
|
package/lib/utils/aes.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.encryptAES = encryptAES;
|
|
9
|
+
exports.decryptAES = decryptAES;
|
|
10
|
+
|
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
+
|
|
13
|
+
var _aesJs = _interopRequireDefault(require("aes-js"));
|
|
14
|
+
|
|
15
|
+
var FIXED_KEY = 'tfPY4ceiCfhOGmsNnILk89EqjHsB5fPWypIE97PY1os';
|
|
16
|
+
|
|
17
|
+
function base64ToBytes(base64) {
|
|
18
|
+
var binaryString = atob(base64);
|
|
19
|
+
return Uint8Array.from(binaryString, function (c) {
|
|
20
|
+
return c.charCodeAt(0);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function pkcs7Pad(data) {
|
|
25
|
+
var blockSize = 16;
|
|
26
|
+
var padLength = blockSize - data.length % blockSize;
|
|
27
|
+
var padding = new Uint8Array(padLength).fill(padLength);
|
|
28
|
+
return Uint8Array.from([].concat((0, _toConsumableArray2.default)(data), (0, _toConsumableArray2.default)(padding)));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function encryptAES(plainText) {
|
|
32
|
+
try {
|
|
33
|
+
// 1. Base64 解码密钥
|
|
34
|
+
var keyBytes = base64ToBytes(FIXED_KEY); // 2. 将明文转为字节数组
|
|
35
|
+
|
|
36
|
+
var textBytes = _aesJs.default.utils.utf8.toBytes(plainText); // 3. PKCS7 填充
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
var paddedBytes = pkcs7Pad(textBytes); // 4. 创建 AES ECB 加密器
|
|
40
|
+
|
|
41
|
+
var aesEcb = new _aesJs.default.ModeOfOperation.ecb(keyBytes); // 5. 加密
|
|
42
|
+
|
|
43
|
+
var encryptedBytes = aesEcb.encrypt(paddedBytes); // 6. 返回 base64 编码结果
|
|
44
|
+
|
|
45
|
+
var encryptedBase64 = btoa(String.fromCharCode.apply(String, (0, _toConsumableArray2.default)(encryptedBytes)));
|
|
46
|
+
return encryptedBase64;
|
|
47
|
+
} catch (e) {
|
|
48
|
+
throw new Error('AES加密失败: ' + e.message);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function pkcs7Unpad(data) {
|
|
53
|
+
var padLength = data[data.length - 1];
|
|
54
|
+
return data.slice(0, data.length - padLength);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function decryptAES(cipherBase64) {
|
|
58
|
+
try {
|
|
59
|
+
// 1. Base64 解码密钥和密文
|
|
60
|
+
var keyBytes = base64ToBytes(FIXED_KEY);
|
|
61
|
+
var encryptedBytes = base64ToBytes(cipherBase64); // 2. 创建 AES 解密器(ECB 模式)
|
|
62
|
+
|
|
63
|
+
var aesEcb = new _aesJs.default.ModeOfOperation.ecb(keyBytes); // 3. 解密
|
|
64
|
+
|
|
65
|
+
var decryptedBytes = aesEcb.decrypt(encryptedBytes); // 4. 去除 PKCS7 填充
|
|
66
|
+
|
|
67
|
+
var unpaddedBytes = pkcs7Unpad(decryptedBytes); // 5. 转成 UTF8 字符串
|
|
68
|
+
|
|
69
|
+
var decryptedText = _aesJs.default.utils.utf8.fromBytes(unpaddedBytes);
|
|
70
|
+
|
|
71
|
+
return decryptedText;
|
|
72
|
+
} catch (e) {
|
|
73
|
+
throw new Error('AES解密失败: ' + e.message);
|
|
74
|
+
}
|
|
75
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parsec-libs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.226-ertong",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"start": "dumi dev",
|
|
6
6
|
"docs:build": "dumi build",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@babel/runtime": "^7.10.4",
|
|
33
|
+
"aes-js": "^3.1.2",
|
|
33
34
|
"china-division": "^2.3.1",
|
|
34
35
|
"clipboard": "^2.0.8",
|
|
35
36
|
"create-api-hooks": "^0.0.27",
|