ms-vite-plugin 1.1.2 → 1.1.4
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/dist/build.js +6 -0
- package/dist/cli.js +91 -1
- package/dist/mcp/device-config.d.ts +55 -0
- package/dist/mcp/device-config.js +183 -0
- package/dist/mcp/docs-service.d.ts +65 -0
- package/dist/mcp/docs-service.js +168 -0
- package/dist/mcp/project.d.ts +16 -0
- package/dist/mcp/project.js +74 -0
- package/dist/mcp/tools.d.ts +18 -0
- package/dist/mcp/tools.js +825 -0
- package/dist/mcp/types.d.ts +32 -0
- package/dist/mcp/types.js +11 -0
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.js +86 -0
- package/dist/project.d.ts +89 -0
- package/dist/project.js +306 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +63 -0
- package/docs/api/action.md +922 -0
- package/docs/api/appleocr.md +229 -0
- package/docs/api/config.md +122 -0
- package/docs/api/cryptoUtils.md +232 -0
- package/docs/api/device.md +374 -0
- package/docs/api/file.md +516 -0
- package/docs/api/global.md +617 -0
- package/docs/api/hid.md +1032 -0
- package/docs/api/hotUpdate.md +166 -0
- package/docs/api/http.md +548 -0
- package/docs/api/image.md +907 -0
- package/docs/api/ime.md +290 -0
- package/docs/api/logger.md +324 -0
- package/docs/api/media.md +248 -0
- package/docs/api/mysql.md +441 -0
- package/docs/api/netCard.md +200 -0
- package/docs/api/node.md +353 -0
- package/docs/api/paddleocr.md +246 -0
- package/docs/api/pip.md +242 -0
- package/docs/api/system.md +572 -0
- package/docs/api/thread.md +269 -0
- package/docs/api/tomatoocr.md +425 -0
- package/docs/api/tts.md +334 -0
- package/docs/api/ui.md +947 -0
- package/docs/api/utils.md +265 -0
- package/docs/api/yolo.md +310 -0
- package/docs/apicn/action.md +919 -0
- package/docs/apicn/appleocr.md +233 -0
- package/docs/apicn/config.md +120 -0
- package/docs/apicn/device.md +385 -0
- package/docs/apicn/file.md +511 -0
- package/docs/apicn/global.md +613 -0
- package/docs/apicn/hid.md +1033 -0
- package/docs/apicn/hotUpdate.md +170 -0
- package/docs/apicn/http.md +672 -0
- package/docs/apicn/image.md +924 -0
- package/docs/apicn/ime.md +290 -0
- package/docs/apicn/logger.md +332 -0
- package/docs/apicn/media.md +252 -0
- package/docs/apicn/mysql.md +445 -0
- package/docs/apicn/netCard.md +200 -0
- package/docs/apicn/node.md +362 -0
- package/docs/apicn/paddleocr.md +255 -0
- package/docs/apicn/pip.md +242 -0
- package/docs/apicn/system.md +575 -0
- package/docs/apicn/thread.md +269 -0
- package/docs/apicn/tts.md +338 -0
- package/docs/apicn/ui.md +933 -0
- package/docs/apicn/utils.md +265 -0
- package/docs/apicn/yolo.md +314 -0
- package/docs/apipython/action.md +901 -0
- package/docs/apipython/appleocr.md +226 -0
- package/docs/apipython/config.md +126 -0
- package/docs/apipython/cryptoUtils.md +246 -0
- package/docs/apipython/device.md +365 -0
- package/docs/apipython/file.md +476 -0
- package/docs/apipython/g.md +154 -0
- package/docs/apipython/hid.md +1059 -0
- package/docs/apipython/hotUpdate.md +154 -0
- package/docs/apipython/image.md +938 -0
- package/docs/apipython/ime.md +306 -0
- package/docs/apipython/logger.md +330 -0
- package/docs/apipython/media.md +221 -0
- package/docs/apipython/mysql.md +432 -0
- package/docs/apipython/netCard.md +219 -0
- package/docs/apipython/node.md +331 -0
- package/docs/apipython/overview.md +66 -0
- package/docs/apipython/paddleocr.md +211 -0
- package/docs/apipython/pip.md +231 -0
- package/docs/apipython/system.md +458 -0
- package/docs/apipython/tomatoocr.md +444 -0
- package/docs/apipython/tts.md +331 -0
- package/docs/apipython/ui.md +949 -0
- package/docs/apipython/utils.md +284 -0
- package/docs/apipython/yolo.md +281 -0
- package/package.json +8 -4
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# AppleOCR 模块
|
|
2
|
+
|
|
3
|
+
AppleOCR 模块基于 Apple Vision 框架,提供原生的光学字符识别(OCR)功能。该模块利用 iOS 系统内置的机器学习能力,无需额外模型文件,具有高效、准确的特点。
|
|
4
|
+
|
|
5
|
+
<span style="color: red;">此模块仅支持 iOS 系统。</span>
|
|
6
|
+
|
|
7
|
+
## 核心特性
|
|
8
|
+
|
|
9
|
+
### 🚀 性能优势
|
|
10
|
+
|
|
11
|
+
- **原生支持**: 基于 Apple Vision 框架,无需额外模型文件
|
|
12
|
+
- **高性能**: 利用 iOS 系统优化,识别速度快
|
|
13
|
+
- **低资源占用**: 无需加载大型模型文件
|
|
14
|
+
|
|
15
|
+
### 🌍 多语言支持
|
|
16
|
+
|
|
17
|
+
- **默认语言**: 中文和英文(`["zh-Hans", "en-US"]`)
|
|
18
|
+
- **支持语言**: `["en-US", "fr-FR", "it-IT", "de-DE", "es-ES", "pt-BR", "zh-Hans", "zh-Hant"]`
|
|
19
|
+
|
|
20
|
+
### 📱 多种输入源
|
|
21
|
+
|
|
22
|
+
- **屏幕截图**: 直接识别当前屏幕内容 (`"screen"`)
|
|
23
|
+
- **图片文件**: 支持本地图片文件路径
|
|
24
|
+
- **图片 ID**: 通过 image 模块获取的图片 ID
|
|
25
|
+
- **区域识别**: 支持指定区域的精确文字识别
|
|
26
|
+
|
|
27
|
+
## 数据类型
|
|
28
|
+
|
|
29
|
+
### OCRResult
|
|
30
|
+
|
|
31
|
+
识别结果字典,包含以下键:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
from typing import TypedDict
|
|
35
|
+
|
|
36
|
+
class OCRResult(TypedDict):
|
|
37
|
+
text: str # 识别的文本内容
|
|
38
|
+
confidence: float # 识别置信度 (0-1)
|
|
39
|
+
x: int # 文本区域左上角 x 坐标
|
|
40
|
+
y: int # 文本区域左上角 y 坐标
|
|
41
|
+
width: int # 文本区域宽度
|
|
42
|
+
height: int # 文本区域高度
|
|
43
|
+
ex: int # 文本区域右下角 x 坐标
|
|
44
|
+
ey: int # 文本区域右下角 y 坐标
|
|
45
|
+
centerX: int # 文本区域中心点 x 坐标
|
|
46
|
+
centerY: int # 文本区域中心点 y 坐标
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**字段说明:**
|
|
50
|
+
|
|
51
|
+
| 参数名 | 类型 | 描述 |
|
|
52
|
+
| -------------------- | ----- | -------------------------------------- |
|
|
53
|
+
| `text` | str | 识别的文本内容 |
|
|
54
|
+
| `confidence` | float | 识别置信度 (0-1),值越高表示识别越准确 |
|
|
55
|
+
| `x`, `y` | int | 文本区域左上角坐标 |
|
|
56
|
+
| `width`, `height` | int | 文本区域宽度和高度 |
|
|
57
|
+
| `ex`, `ey` | int | 文本区域右下角坐标 |
|
|
58
|
+
| `centerX`, `centerY` | int | 文本区域中心点坐标 |
|
|
59
|
+
|
|
60
|
+
## API 参考
|
|
61
|
+
|
|
62
|
+
### 文字识别
|
|
63
|
+
|
|
64
|
+
#### recognize
|
|
65
|
+
|
|
66
|
+
执行通用 OCR 文字识别,支持多种输入源和指定识别区域。
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
def recognize(
|
|
70
|
+
input: str,
|
|
71
|
+
x: int = 0,
|
|
72
|
+
y: int = 0,
|
|
73
|
+
ex: int = 0,
|
|
74
|
+
ey: int = 0,
|
|
75
|
+
languages: Optional[List[str]] = ["zh-Hans", "en-US"]
|
|
76
|
+
) -> List[OCRResult]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**参数:**
|
|
80
|
+
|
|
81
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
82
|
+
| ----------- | --------- | -------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
83
|
+
| `input` | str | 是 | - | 输入源,支持以下类型:<br>- `"screen"` - 当前屏幕截图<br>- `str` - 图片文件路径或 URL<br>- `imageId` - 图片 ID(通过 image 模块获取) |
|
|
84
|
+
| `x` | int | 否 | 0 | 识别区域左上角 x 坐标 |
|
|
85
|
+
| `y` | int | 否 | 0 | 识别区域左上角 y 坐标 |
|
|
86
|
+
| `ex` | int | 否 | 0 | 识别区域右下角 x 坐标 |
|
|
87
|
+
| `ey` | int | 否 | 0 | 识别区域右下角 y 坐标 |
|
|
88
|
+
| `languages` | List[str] | 否 | ["zh-Hans", "en-US"] | 可选,指定识别语言列表,如 `["zh-Hans", "en-US"]` |
|
|
89
|
+
|
|
90
|
+
**返回值:**
|
|
91
|
+
|
|
92
|
+
| 类型 | 描述 |
|
|
93
|
+
| ----------------- | ---------------------- |
|
|
94
|
+
| `List[OCRResult]` | 匹配的文本识别结果数组 |
|
|
95
|
+
|
|
96
|
+
**使用示例:**
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from kuaijs import appleocr
|
|
100
|
+
|
|
101
|
+
# 识别整个屏幕
|
|
102
|
+
full_screen_results = appleocr.recognize("screen", 0, 0, 0, 0)
|
|
103
|
+
print(f"识别到 {len(full_screen_results)} 个文本区域")
|
|
104
|
+
for i, result in enumerate(full_screen_results):
|
|
105
|
+
print(f"文本 {i + 1}: {result.text} (置信度: {result.confidence})")
|
|
106
|
+
print(f"位置: ({result.x}, {result.y}) - ({result.ex}, {result.ey})")
|
|
107
|
+
print(f"中心点: ({result.centerX}, {result.centerY})")
|
|
108
|
+
|
|
109
|
+
# 识别屏幕指定区域
|
|
110
|
+
region_results = appleocr.recognize("screen", 100, 100, 500, 300)
|
|
111
|
+
print(f"指定区域识别结果: {region_results}")
|
|
112
|
+
|
|
113
|
+
# 识别图片文件
|
|
114
|
+
image_results = appleocr.recognize("/path/to/image.png", 0, 0, 800, 600)
|
|
115
|
+
if image_results:
|
|
116
|
+
print("图片文字识别成功")
|
|
117
|
+
for result in image_results:
|
|
118
|
+
print(f"识别文字: {result.text}")
|
|
119
|
+
print(f"区域: {result.width}x{result.height}")
|
|
120
|
+
else:
|
|
121
|
+
print("图片中未识别到文字")
|
|
122
|
+
|
|
123
|
+
# 指定识别语言
|
|
124
|
+
chinese_results = appleocr.recognize("screen", 0, 0, 1920, 1080, ["zh-Hans", "en-US"])
|
|
125
|
+
print(f"中英文识别结果: {chinese_results}")
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 数字识别
|
|
129
|
+
|
|
130
|
+
#### recognizeNumbers
|
|
131
|
+
|
|
132
|
+
执行专门的数字 OCR 识别,针对数字识别进行了优化,提高数字识别的准确性。
|
|
133
|
+
|
|
134
|
+
**支持字符**: 0-9 数字、逗号(,)、小数点(.)、加号(+)、减号(-)
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
def recognizeNumbers(
|
|
138
|
+
input: str,
|
|
139
|
+
x: int = 0,
|
|
140
|
+
y: int = 0,
|
|
141
|
+
ex: int = 0,
|
|
142
|
+
ey: int = 0
|
|
143
|
+
) -> List[OCRResult]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**参数:**
|
|
147
|
+
|
|
148
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
149
|
+
| ------- | ---- | -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
150
|
+
| `input` | str | 是 | - | 输入源,支持以下类型: <br>-`"screen"` 当前屏幕截图 <br>- `str` 图片文件路径或 URL <br>- `imageId` 图片 ID(通过 image 模块获取) |
|
|
151
|
+
| `x` | int | 否 | 0 | 识别区域左上角 x 坐标 |
|
|
152
|
+
| `y` | int | 否 | 0 | 识别区域左上角 y 坐标 |
|
|
153
|
+
| `ex` | int | 否 | 0 | 识别区域右下角 x 坐标 |
|
|
154
|
+
| `ey` | int | 否 | 0 | 识别区域右下角 y 坐标 |
|
|
155
|
+
|
|
156
|
+
**返回值:**
|
|
157
|
+
|
|
158
|
+
| 类型 | 描述 |
|
|
159
|
+
| ----------------- | ---------------------- |
|
|
160
|
+
| `List[OCRResult]` | 匹配的数字识别结果数组 |
|
|
161
|
+
|
|
162
|
+
**使用示例:**
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
from kuaijs import appleocr
|
|
166
|
+
|
|
167
|
+
# 识别屏幕中的数字
|
|
168
|
+
number_results = appleocr.recognizeNumbers("screen", 100, 100, 500, 300)
|
|
169
|
+
print(f"识别到 {len(number_results)} 个数字区域")
|
|
170
|
+
|
|
171
|
+
for i, result in enumerate(number_results):
|
|
172
|
+
print(f"数字 {i + 1}: {result.text}")
|
|
173
|
+
print(f"置信度: {result.confidence}")
|
|
174
|
+
print(f"位置: ({result.centerX}, {result.centerY})")
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 文本查找
|
|
178
|
+
|
|
179
|
+
#### findText
|
|
180
|
+
|
|
181
|
+
执行指定文本查找,在识别结果中查找特定的文本内容。使用全字匹配模式,确保精确匹配目标文本。
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
def findText(
|
|
185
|
+
input: str,
|
|
186
|
+
texts: List[str],
|
|
187
|
+
x: int = 0,
|
|
188
|
+
y: int = 0,
|
|
189
|
+
ex: int = 0,
|
|
190
|
+
ey: int = 0,
|
|
191
|
+
languages: Optional[List[str]] = ["zh-Hans", "en-US"]
|
|
192
|
+
) -> List[OCRResult]
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**参数:**
|
|
196
|
+
|
|
197
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
198
|
+
| ----------- | --------- | -------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
199
|
+
| `input` | str | 是 | - | 输入源,支持以下类型: <br>-`"screen"` 当前屏幕截图 <br>- `str` 图片文件路径或 URL <br>- `imageId` 图片 ID(通过 image 模块获取) |
|
|
200
|
+
| `texts` | List[str] | 是 | - | 要查找的文本数组 |
|
|
201
|
+
| `x` | int | 否 | 0 | 识别区域左上角 x 坐标 |
|
|
202
|
+
| `y` | int | 否 | 0 | 识别区域左上角 y 坐标 |
|
|
203
|
+
| `ex` | int | 否 | 0 | 识别区域右下角 x 坐标 |
|
|
204
|
+
| `ey` | int | 否 | 0 | 识别区域右下角 y 坐标 |
|
|
205
|
+
| `languages` | List[str] | 否 | ["zh-Hans", "en-US"] | 可选,指定识别语言列表,如 `["zh-Hans", "en-US"]` |
|
|
206
|
+
|
|
207
|
+
**返回值:**
|
|
208
|
+
|
|
209
|
+
| 类型 | 描述 |
|
|
210
|
+
| ----------------- | ---------------------- |
|
|
211
|
+
| `List[OCRResult]` | 匹配的文本识别结果数组 |
|
|
212
|
+
|
|
213
|
+
**使用示例:**
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from kuaijs import appleocr
|
|
217
|
+
|
|
218
|
+
# 识别屏幕中的文本
|
|
219
|
+
text_results = appleocr.findText("screen", ["123", "456"], 0, 0, 100, 100)
|
|
220
|
+
print(f"识别到 {len(text_results)} 个文本区域")
|
|
221
|
+
|
|
222
|
+
for i, result in enumerate(text_results):
|
|
223
|
+
print(f"文本 {i + 1}: {result.text} (置信度: {result.confidence})")
|
|
224
|
+
print(f"位置: ({result.x}, {result.y}) - ({result.ex}, {result.ey})")
|
|
225
|
+
print(f"中心点: ({result.centerX}, {result.centerY})")
|
|
226
|
+
```
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# 配置模块 (Config)
|
|
2
|
+
|
|
3
|
+
配置模块提供了读取、更新和删除应用配置的功能。
|
|
4
|
+
|
|
5
|
+
网页的 ms.setConfig 对应 config.set
|
|
6
|
+
|
|
7
|
+
网页的 ms.getConfig 对应 config.get
|
|
8
|
+
|
|
9
|
+
网页的 ms.getAllConfig 对应 config.all
|
|
10
|
+
|
|
11
|
+
网页的 ms.removeConfig 对应 config.remove
|
|
12
|
+
|
|
13
|
+
## API 参考
|
|
14
|
+
|
|
15
|
+
### 配置读取
|
|
16
|
+
|
|
17
|
+
#### get - 读取配置项的值。
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from typing import Any, Optional, Dict
|
|
21
|
+
|
|
22
|
+
def get(key: str) -> Any | None:
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**参数:**
|
|
26
|
+
|
|
27
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
28
|
+
| ------ | ------ | -------- | ------ | -------- |
|
|
29
|
+
| `key` | string | 是 | - | 配置键名 |
|
|
30
|
+
|
|
31
|
+
**返回值:**
|
|
32
|
+
|
|
33
|
+
| 类型 | 描述 |
|
|
34
|
+
| ------------- | ------ |
|
|
35
|
+
| `Any \| None` | 配置值 |
|
|
36
|
+
|
|
37
|
+
**示例:**
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from kuaijs import config
|
|
41
|
+
maxRetries = config.get("maxRetries")
|
|
42
|
+
if maxRetries:
|
|
43
|
+
print(f"最大重试次数: {maxRetries}")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 配置管理
|
|
47
|
+
|
|
48
|
+
#### all - 获取所有配置的 JSON 格式数据。
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
def all() -> Dict[str, Any]:
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**返回值:**
|
|
55
|
+
|
|
56
|
+
| 类型 | 描述 |
|
|
57
|
+
| ---------------- | ------------------ |
|
|
58
|
+
| `Dict[str, Any]` | 包含所有配置的对象 |
|
|
59
|
+
|
|
60
|
+
**示例:**
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from kuaijs import config
|
|
64
|
+
import json
|
|
65
|
+
allConfigs = config.all()
|
|
66
|
+
print(f"所有配置: {json.dumps(allConfigs, indent=2)}")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### set - 更新或设置配置项的值。
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
def set(key: str, value: Any) -> bool:
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**参数:**
|
|
76
|
+
|
|
77
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
78
|
+
| ------- | ------ | -------- | ------ | ---------- |
|
|
79
|
+
| `key` | string | 是 | - | 配置键名 |
|
|
80
|
+
| `value` | Any | 是 | - | 新的配置值 |
|
|
81
|
+
|
|
82
|
+
**返回值:**
|
|
83
|
+
|
|
84
|
+
| 类型 | 描述 |
|
|
85
|
+
| ------ | ------------ |
|
|
86
|
+
| `bool` | 更新是否成功 |
|
|
87
|
+
|
|
88
|
+
**示例:**
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
from kuaijs import config
|
|
92
|
+
# 更新不同类型的配置
|
|
93
|
+
success1 = config.set("maxRetries", 5)
|
|
94
|
+
success2 = config.set("apiBaseUrl", "https://api.example.com")
|
|
95
|
+
success3 = config.set("debugEnabled", True)
|
|
96
|
+
|
|
97
|
+
if success1 and success2 and success3:
|
|
98
|
+
print("配置更新成功")
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### remove - 删除指定的配置项。
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
def remove(key: str) -> bool:
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**参数:**
|
|
108
|
+
|
|
109
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
110
|
+
| ------ | ------ | -------- | ------ | ---------------- |
|
|
111
|
+
| `key` | string | 是 | - | 要删除的配置键名 |
|
|
112
|
+
|
|
113
|
+
**返回值:**
|
|
114
|
+
|
|
115
|
+
| 类型 | 描述 |
|
|
116
|
+
| ------ | ------------ |
|
|
117
|
+
| `bool` | 删除是否成功 |
|
|
118
|
+
|
|
119
|
+
**示例:**
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
from kuaijs import config
|
|
123
|
+
deleted = config.remove("temporaryConfig")
|
|
124
|
+
if deleted:
|
|
125
|
+
print("临时配置已删除")
|
|
126
|
+
```
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# 加密模块 (CryptoUtils)
|
|
2
|
+
|
|
3
|
+
加密模块提供了常用的加密和解密功能,支持 AES、RSA 以及 MD5、SHA1、SHA256 等哈希算法。
|
|
4
|
+
|
|
5
|
+
## 功能概览
|
|
6
|
+
|
|
7
|
+
- **AES 加解密**: 支持 AES-ECB 模式的加密与解密
|
|
8
|
+
- **RSA 加解密**: 支持 RSA 公钥加密与私钥解密
|
|
9
|
+
- **哈希算法**: 支持 MD5, SHA1, SHA256 消息摘要计算
|
|
10
|
+
|
|
11
|
+
## API 参考
|
|
12
|
+
|
|
13
|
+
### AES 加解密
|
|
14
|
+
|
|
15
|
+
#### encryptWithAES_ECB - 使用 AES ECB 模式加密数据
|
|
16
|
+
|
|
17
|
+
默认使用 PKCS7 填充。
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
def encryptWithAES_ECB(data: str, aesKey: str, noPadding: bool) -> str
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**参数:**
|
|
24
|
+
|
|
25
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
26
|
+
| ----------- | ---- | -------- | ------ | ---------------------------------------------------------------------- |
|
|
27
|
+
| `data` | str | 是 | | 要加密的数据 |
|
|
28
|
+
| `aesKey` | str | 是 | | AES 密钥,支持 16 位、24 位、32 位字符串 |
|
|
29
|
+
| `noPadding` | bool | 否 | False | 是否禁用填充。`False`: 使用 PKCS7 填充; `True`: 不使用填充 (NoPadding) |
|
|
30
|
+
|
|
31
|
+
**返回值:**
|
|
32
|
+
|
|
33
|
+
| 类型 | 描述 |
|
|
34
|
+
| ----- | -------------------------------- |
|
|
35
|
+
| `str` | 加密后的数据 (Base64 编码字符串) |
|
|
36
|
+
|
|
37
|
+
**示例:**
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from kuaijs import cryptoUtils, logger
|
|
41
|
+
|
|
42
|
+
data = "Hello World"
|
|
43
|
+
key = "1234567890123456" # 16位密钥
|
|
44
|
+
encrypted = cryptoUtils.encryptWithAES_ECB(data, key, False)
|
|
45
|
+
logger.info(f"AES Encrypted: {encrypted}")
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### decryptWithAES_ECB - 使用 AES ECB 模式解密数据
|
|
49
|
+
|
|
50
|
+
默认使用 PKCS7 填充。
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
def decryptWithAES_ECB(data: str, aesKey: str, noPadding: bool) -> str
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**参数:**
|
|
57
|
+
|
|
58
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
59
|
+
| ----------- | ---- | -------- | ------ | ---------------------------------------------------------------------- |
|
|
60
|
+
| `data` | str | 是 | | 要解密的数据 (Base64 编码字符串) |
|
|
61
|
+
| `aesKey` | str | 是 | | AES 密钥,支持 16 位、24 位、32 位字符串 |
|
|
62
|
+
| `noPadding` | bool | 否 | False | 是否禁用填充。`False`: 使用 PKCS7 填充; `True`: 不使用填充 (NoPadding) |
|
|
63
|
+
|
|
64
|
+
**返回值:**
|
|
65
|
+
|
|
66
|
+
| 类型 | 描述 |
|
|
67
|
+
| ----- | ---------------- |
|
|
68
|
+
| `str` | 解密后的原始数据 |
|
|
69
|
+
|
|
70
|
+
**示例:**
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
from kuaijs import cryptoUtils, logger
|
|
74
|
+
|
|
75
|
+
encrypted_data = "Base64EncodedString..."
|
|
76
|
+
key = "1234567890123456"
|
|
77
|
+
decrypted = cryptoUtils.decryptWithAES_ECB(encrypted_data, key, False)
|
|
78
|
+
logger.info(f"AES Decrypted: {decrypted}")
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### RSA 加解密
|
|
82
|
+
|
|
83
|
+
#### encryptWithRSA - 使用 RSA 公钥加密数据
|
|
84
|
+
|
|
85
|
+
使用 PKCS1 填充。
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
def encryptWithRSA(data: str, publicKeyBase64: str) -> str
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**参数:**
|
|
92
|
+
|
|
93
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
94
|
+
| ----------------- | ---- | -------- | ------ | ---------------------------- |
|
|
95
|
+
| `data` | str | 是 | | 要加密的数据 |
|
|
96
|
+
| `publicKeyBase64` | str | 是 | | RSA 公钥 (Base64 编码字符串) |
|
|
97
|
+
|
|
98
|
+
**返回值:**
|
|
99
|
+
|
|
100
|
+
| 类型 | 描述 |
|
|
101
|
+
| ----- | -------------------------------- |
|
|
102
|
+
| `str` | 加密后的数据 (Base64 编码字符串) |
|
|
103
|
+
|
|
104
|
+
**示例:**
|
|
105
|
+
|
|
106
|
+
```python
|
|
107
|
+
from kuaijs import cryptoUtils, logger
|
|
108
|
+
|
|
109
|
+
data = "123456"
|
|
110
|
+
public_key = """-----BEGIN PUBLIC KEY-----
|
|
111
|
+
公钥内容
|
|
112
|
+
-----END PUBLIC KEY-----
|
|
113
|
+
"""
|
|
114
|
+
encrypted = cryptoUtils.encryptWithRSA(data, public_key)
|
|
115
|
+
logger.info(f"RSA Encrypted: {encrypted}")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### decryptWithRSA - 使用 RSA 私钥解密数据
|
|
119
|
+
|
|
120
|
+
使用 PKCS1 填充。
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
def decryptWithRSA(encryptedData: str, privateKeyBase64: str) -> str
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**参数:**
|
|
127
|
+
|
|
128
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
129
|
+
| ------------------ | ---- | -------- | ------ | -------------------------------- |
|
|
130
|
+
| `encryptedData` | str | 是 | | 要解密的数据 (Base64 编码字符串) |
|
|
131
|
+
| `privateKeyBase64` | str | 是 | | RSA 私钥 (Base64 编码字符串) |
|
|
132
|
+
|
|
133
|
+
**返回值:**
|
|
134
|
+
|
|
135
|
+
| 类型 | 描述 |
|
|
136
|
+
| ----- | ---------------- |
|
|
137
|
+
| `str` | 解密后的原始数据 |
|
|
138
|
+
|
|
139
|
+
**示例:**
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from kuaijs import cryptoUtils, logger
|
|
143
|
+
|
|
144
|
+
encrypted_data = "加密后字符串"
|
|
145
|
+
private_key = """-----BEGIN PRIVATE KEY-----
|
|
146
|
+
私钥内容
|
|
147
|
+
-----END PRIVATE KEY-----"""
|
|
148
|
+
decrypted = cryptoUtils.decryptWithRSA(encrypted_data, private_key)
|
|
149
|
+
logger.info(f"RSA Decrypted: {decrypted}")
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 哈希算法
|
|
153
|
+
|
|
154
|
+
#### md5 - 计算 MD5 值
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
def md5(source: str) -> str
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**参数:**
|
|
161
|
+
|
|
162
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
163
|
+
| -------- | ---- | -------- | ------ | ----------------- |
|
|
164
|
+
| `source` | str | 是 | | 要计算 MD5 的数据 |
|
|
165
|
+
|
|
166
|
+
**返回值:**
|
|
167
|
+
|
|
168
|
+
| 类型 | 描述 |
|
|
169
|
+
| ----- | ------------------------------- |
|
|
170
|
+
| `str` | MD5 哈希值 (小写 16 进制字符串) |
|
|
171
|
+
|
|
172
|
+
**示例:**
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
from kuaijs import cryptoUtils, logger
|
|
176
|
+
|
|
177
|
+
data = "123456"
|
|
178
|
+
hash_val = cryptoUtils.md5(data)
|
|
179
|
+
logger.info(f"MD5: {hash_val}") # e10adc3949ba59abbe56e057f20f883e
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
#### sha1 - 计算 SHA1 值
|
|
183
|
+
|
|
184
|
+
```python
|
|
185
|
+
def sha1(source: str, key: str = None) -> str
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**参数:**
|
|
189
|
+
|
|
190
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
191
|
+
| -------- | ---- | -------- | ------ | ------------------ |
|
|
192
|
+
| `source` | str | 是 | | 要计算 SHA1 的数据 |
|
|
193
|
+
| `key` | str | 否 | None | 可选的 HMAC 密钥 |
|
|
194
|
+
|
|
195
|
+
**返回值:**
|
|
196
|
+
|
|
197
|
+
| 类型 | 描述 |
|
|
198
|
+
| ----- | -------------------------------- |
|
|
199
|
+
| `str` | SHA1 哈希值 (小写 16 进制字符串) |
|
|
200
|
+
|
|
201
|
+
**示例:**
|
|
202
|
+
|
|
203
|
+
```python
|
|
204
|
+
from kuaijs import cryptoUtils, logger
|
|
205
|
+
|
|
206
|
+
data = "123456"
|
|
207
|
+
hash_val = cryptoUtils.sha1(data)
|
|
208
|
+
logger.info(f"SHA1: {hash_val}")
|
|
209
|
+
|
|
210
|
+
# HMAC-SHA1
|
|
211
|
+
# hmac_val = cryptoUtils.sha1(data, "secret_key")
|
|
212
|
+
# logger.info(f"HMAC-SHA1: {hmac_val}")
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
#### sha256 - 计算 SHA256 值
|
|
216
|
+
|
|
217
|
+
```python
|
|
218
|
+
def sha256(source: str, key: str = None) -> str
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**参数:**
|
|
222
|
+
|
|
223
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
224
|
+
| -------- | ---- | -------- | ------ | -------------------- |
|
|
225
|
+
| `source` | str | 是 | | 要计算 SHA256 的数据 |
|
|
226
|
+
| `key` | str | 否 | None | 可选的 HMAC 密钥 |
|
|
227
|
+
|
|
228
|
+
**返回值:**
|
|
229
|
+
|
|
230
|
+
| 类型 | 描述 |
|
|
231
|
+
| ----- | ---------------------------------- |
|
|
232
|
+
| `str` | SHA256 哈希值 (小写 16 进制字符串) |
|
|
233
|
+
|
|
234
|
+
**示例:**
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
from kuaijs import cryptoUtils, logger
|
|
238
|
+
|
|
239
|
+
data = "123456"
|
|
240
|
+
hash_val = cryptoUtils.sha256(data)
|
|
241
|
+
logger.info(f"SHA256: {hash_val}")
|
|
242
|
+
|
|
243
|
+
# HMAC-SHA256
|
|
244
|
+
# hmac_val = cryptoUtils.sha256(data, "secret_key")
|
|
245
|
+
# logger.info(f"HMAC-SHA256: {hmac_val}")
|
|
246
|
+
```
|