# LabVIEW接口加密使用指南 ## 📋 文档信息 - **项目名称**:MES系统 - LabVIEW硬件设备接口 - **更新日期**:2025-10-18 - **文档版本**:v4.0 - **当前状态**:✅ 所有8个LabVIEW接口已全面加密 --- ## ⚡ 快速导航 | 章节 | 内容 | 适用人员 | |-----|------|---------| | [📌 接口总览](#-接口总览) | 所有接口列表及加密状态 | 全部 | | [🔐 已加密接口](#-已加密接口详情) | 加密接口使用方法 | LabVIEW开发 | | [🔓 未加密接口](#-未加密接口说明) | 不需加密的接口说明 | LabVIEW开发 | | [🎯 AES加密参数](#-aes加密参数) | 加密技术参数 | 技术人员 | | [🛠️ 解密方法](#️-解密方法) | Python脚本使用 | LabVIEW开发 | | [❓ 常见问题](#-常见问题) | FAQ | 全部 | --- ## 📌 接口总览 ### LabVIEW专用接口(外部调用)- 全部已加密 ✅ | 接口名称 | 请求方式 | 路径 | 是否加密 | 用途 | |---------|---------|------|---------|------| | **通过设备ID查询配置** | GET | `/device/{iotDeviceId}` | ✅ **已加密** | 获取数据库配置 | | **通过租户+设备查询** | POST | `/tenant/device` | ✅ **已加密** | 获取数据库配置 | | **查询配置列表** | GET | `/list` | ✅ **已加密** | 获取所有配置 | | **获取配置详情** | GET | `/{id}` | ✅ **已加密** | 获取单个配置 | | **获取目标表配置** | GET | `/targetTable/{id}` | ✅ **已加密** | 获取目标表配置 | | **测试数据库连接** | POST | `/testConnection` | ✅ **已加密** | 测试连接并返回配置 | | **查询所有设备ID** | GET | `/deviceIds` | ✅ **已加密** | 获取设备列表和配置 | | **按租户查询设备ID** | GET | `/deviceIds/tenant` | ✅ **已加密** | 按租户获取设备列表和配置 | ### 管理后台接口(内部使用) | 接口名称 | 请求方式 | 路径 | 是否加密 | 说明 | |---------|---------|------|---------|------| | 新增配置 | POST | `/` | ❌ 未加密 | Spring Security保护 | | 修改配置 | PUT | `/` | ❌ 未加密 | Spring Security保护 | | 删除配置 | DELETE | `/{ids}` | ❌ 未加密 | Spring Security保护 | | 导出配置 | POST | `/export` | ❌ 未加密 | Spring Security保护 | --- ## 🔐 已加密接口详情 ### 接口1️⃣:通过设备ID查询配置 **适用场景**:LabVIEW只知道设备ID,需要获取数据库配置 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/device/{iotDeviceId} 完整地址:http://服务器IP:8080/iot/labview/device/{iotDeviceId} ``` #### 📥 请求示例 ``` GET http://192.168.1.100:8080/iot/labview/device/1001 ``` **路径参数**: - `iotDeviceId`:设备ID(数字) #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": { "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." } } ``` --- ### 接口2️⃣:通过租户+设备查询配置 **适用场景**:LabVIEW知道租户ID和设备ID,需要获取数据库配置 #### 📝 接口信息 ``` 方法:POST 路径:/iot/labview/tenant/device 完整地址:http://服务器IP:8080/iot/labview/tenant/device 请求头:Content-Type: application/json ``` #### 📥 请求示例 ```json POST http://192.168.1.100:8080/iot/labview/tenant/device Content-Type: application/json { "tenantId": 1, "iotDeviceId": 1001 } ``` --- ### 接口3️⃣:查询配置列表 **适用场景**:LabVIEW需要获取所有配置信息 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/list 完整地址:http://服务器IP:8080/iot/labview/list ``` #### 📥 请求示例 ``` GET http://192.168.1.100:8080/iot/labview/list ``` #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": [ { "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." }, { "id": 2, "iotDeviceId": 1002, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "7wgJZsxp4cOk1T/WwnXO7IlP7hPBpFc..." } ] } ``` --- ### 接口4️⃣:获取配置详情 **适用场景**:LabVIEW知道配置ID,需要获取具体配置 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/{id} 完整地址:http://服务器IP:8080/iot/labview/{id} ``` #### 📥 请求示例 ``` GET http://192.168.1.100:8080/iot/labview/1 ``` --- ### 接口5️⃣:获取目标表配置 **适用场景**:LabVIEW需要获取目标表配置信息 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/targetTable/{id} 完整地址:http://服务器IP:8080/iot/labview/targetTable/{id} ``` #### 📥 请求示例 ``` GET http://192.168.1.100:8080/iot/labview/targetTable/1 ``` #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": { "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": { "data": "ymes_iiot_data" }, "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." } } ``` --- ### 接口6️⃣:测试数据库连接 **适用场景**:LabVIEW需要测试数据库连接并获取配置 #### 📝 接口信息 ``` 方法:POST 路径:/iot/labview/testConnection 完整地址:http://服务器IP:8080/iot/labview/testConnection 请求头:Content-Type: application/json ``` #### 📥 请求示例 ```json POST http://192.168.1.100:8080/iot/labview/testConnection Content-Type: application/json { "iotDeviceId": 1001, "iotDbIp": "192.168.1.200", "iotDbPort": 3306, "iotDbName": "mes_database", "iotDbUser": "root", "iotDbPass": "password123" } ``` #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": { "success": true, "message": "数据库连接成功", "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." } } ``` --- ### 接口7️⃣:查询所有设备ID **适用场景**:LabVIEW需要获取所有设备ID和配置 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/deviceIds 完整地址:http://服务器IP:8080/iot/labview/deviceIds ``` #### 📥 请求示例 ``` GET http://192.168.1.100:8080/iot/labview/deviceIds ``` #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": [ { "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." }, { "id": 2, "iotDeviceId": 1002, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "7wgJZsxp4cOk1T/WwnXO7IlP7hPBpFc..." } ] } ``` --- ### 接口8️⃣:按租户查询设备ID **适用场景**:LabVIEW需要按租户获取设备ID和配置 #### 📝 接口信息 ``` 方法:GET 路径:/iot/labview/deviceIds/tenant 完整地址:http://服务器IP:8080/iot/labview/deviceIds/tenant?tenantId=1 ``` #### 📥 请求示例 **方式1:通过租户ID查询** ``` GET http://192.168.1.100:8080/iot/labview/deviceIds/tenant?tenantId=1 ``` **方式2:通过租户名称查询(模糊匹配)** ``` GET http://192.168.1.100:8080/iot/labview/deviceIds/tenant?tenantName=默认 ``` **方式3:组合查询** ``` GET http://192.168.1.100:8080/iot/labview/deviceIds/tenant?tenantId=1&tenantName=默认 ``` #### 📤 响应示例 ```json { "msg": "操作成功", "code": 200, "data": [ { "id": 1, "iotDeviceId": 1001, "tenantId": 1, "tenantName": "默认租户", "iotTargetTable": "{\"data\":\"ymes_iiot_data\"}", "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." } ] } ``` --- ## 📋 所有接口统一响应格式 ### 响应字段说明 | 字段名 | 类型 | 说明 | 是否加密 | |-------|------|------|---------| | `id` | 数字 | 配置ID | ❌ 明文 | | `iotDeviceId` | 数字 | 设备ID | ❌ 明文 | | `tenantId` | 数字 | 租户ID | ❌ 明文 | | `tenantName` | 文本 | 租户名称 | ❌ 明文 | | `iotTargetTable` | 文本/对象 | 目标表配置(JSON字符串或对象) | ❌ 明文 | | `encrypted` | 文本 | 数据库配置(Base64密文) | ✅ **AES加密** | ### 🔓 解密后的数据 使用Python脚本解密 `encrypted` 字段后,得到: ```json { "iotDbIp": "192.168.1.200", "iotDbPort": 3306, "iotDbName": "mes_database", "Object": "root", "Class": "password123" } ``` --- ## 🎯 AES加密参数 ### 核心参数表 | 参数名称 | 参数值 | 说明 | |---------|--------|------| | **加密算法** | AES | 高级加密标准 | | **加密模式** | ECB | 电子密码本模式 | | **密钥** | `YaviiMESpassword` | ⚠️ 严格区分大小写 | | **密钥长度** | 128 bits (16字节) | 标准长度 | | **填充方式** | PKCS5Padding | 自动填充 | | **字符编码** | UTF-8 | 统一编码 | | **输出格式** | Base64 | 可见字符编码 | | **偏移量(IV)** | ❌ **不需要** | ECB模式无需IV | ### ⚠️ 重要提醒 #### 1. 密钥输入规范 ``` ✅ 正确:YaviiMESpassword ❌ 错误:yaviimespassword (大小写错误) ❌ 错误:Yavii MES password (有空格) ❌ 错误:YaviiMESpassword123 (长度错误) ``` #### 2. 不需要偏移量 ECB模式**不使用偏移量(IV)**: - ✅ 只需要密钥 - ❌ 不需要IV - ❌ 不需要偏移量 如果工具强制要求,可以: - 留空 - 填 `0000000000000000`(16个0) - 填任意值(不会被使用) --- ## 🛠️ 解密方法 ### 方法1:Python脚本(推荐) #### 前提条件 1. **安装Python 3.6+** 2. **安装加密库**: ```bash pip install pycryptodome ``` #### 使用步骤 **步骤1:调用接口获取数据** ```json { "encrypted": "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." } ``` **步骤2:运行解密脚本** ```bash python 2025-10-18_硬件融合接口解密脚本.py "pzH8mWXKJqP9vE5tYnZxJg8fL2kR7sW..." ``` **步骤3:获取明文配置** ```json { "iotDbIp": "192.168.1.200", "iotDbPort": 3306, "iotDbName": "mes_database", "Object": "root", "Class": "password123" } ``` #### 脚本位置 ``` 项目根目录/.tasks/labview_aes_decrypt.py ``` --- ### 方法2:在线工具 #### 推荐工具 1. 站长工具:https://tool.oschina.net/encrypt 2. 菜鸟工具:https://c.runoob.com/front-end/893/ 3. 在线工具:https://www.sojson.com/encrypt_aes.html #### 参数设置 | 设置项 | 填写值 | 备注 | |-------|--------|------| | 操作 | **解密(Decrypt)** | 必选 | | 密文 | 粘贴 `encrypted` 的值 | Base64格式 | | 算法 | **AES** | 必选 | | 模式 | **ECB** | ⚠️ 必须选ECB | | 密钥 | `YaviiMESpassword` | 区分大小写 | | 密钥长度 | 128 bits | 或填128 | | 填充 | PKCS5 或 PKCS7 | 任选一个 | | 字符集 | UTF-8 | 必选 | | 输出格式 | Base64 | 必选 | | 偏移量/IV | 留空 或 填0 | ECB不需要 | --- ## 📊 LabVIEW集成流程 ### 完整调用流程 ``` ┌──────────────────────────────────────────┐ │ LabVIEW主程序 │ └──────────────────────────────────────────┘ ↓ [1] 调用HTTP接口 ↓ 选择接口类型: ├─ 方式A:GET /device/{iotDeviceId} └─ 方式B:POST /tenant/device ↓ [2] 获取JSON响应 ↓ 解析JSON,提取 "encrypted" 字段 ↓ [3] 调用Python脚本解密 命令:python labview_aes_decrypt.py "" ↓ [4] 解析解密后的JSON 提取: - iotDbIp(数据库IP) - iotDbPort(数据库端口) - iotDbName(数据库名) - Object(数据库账号) - Class(数据库密码) ↓ [5] 连接数据库 使用上面提取的信息连接MySQL数据库 ↓ [6] 上传数据 写入数据到指定表 ``` ### 关键步骤说明 #### 步骤1:HTTP请求 **使用LabVIEW自带的HTTP Client VI** - URL:`http://服务器IP:8080/iot/labview/device/1001` - 方法:GET 或 POST - 请求头:`Content-Type: application/json`(仅POST需要) #### 步骤2:JSON解析 **使用LabVIEW的JSON解析工具** - 解析响应的 `data.encrypted` 字段 - 得到Base64密文字符串 #### 步骤3:Python解密 **使用System Exec VI调用Python脚本** - 命令:`python` - 参数:`.tasks\labview_aes_decrypt.py ""` - 读取标准输出 #### 步骤4:解析配置 **再次使用JSON解析工具** - 解析Python输出的JSON - 提取各个数据库配置字段 #### 步骤5:连接数据库 **使用LabVIEW Database Connectivity Toolkit** - Host:iotDbIp - Port:iotDbPort - Database:iotDbName - User:Object - Password:Class --- ## 🔒 安全说明 ### ✅ 已加密的信息 | 字段名 | 说明 | 为什么要加密 | |-------|------|------------| | `iotDbIp` | 数据库IP地址 | 防止暴露数据库位置 | | `iotDbPort` | 数据库端口 | 防止暴露服务端口 | | `iotDbName` | 数据库名称 | 防止暴露数据库结构 | | `Object` | 数据库账号 | 防止账号泄露 | | `Class` | 数据库密码 | 防止密码泄露 | ### 🔓 未加密的信息 | 字段名 | 说明 | 为什么不加密 | |-------|------|------------| | `id` | 配置ID | 业务标识,无敏感性 | | `iotDeviceId` | 设备ID | 已知信息,用于查询 | | `tenantId` | 租户ID | 已知信息,用于查询 | | `tenantName` | 租户名称 | 业务标识,无敏感性 | | `iotTargetTable` | 目标表配置 | 表名信息,无敏感性 | ### 🛡️ 安全等级 | 场景 | 安全等级 | 说明 | |-----|---------|------| | **内网环境(局域网)** | ⭐⭐⭐⭐⭐ | 高度安全 | | **VPN专线** | ⭐⭐⭐⭐⭐ | 高度安全 | | **云端VPC私网** | ⭐⭐⭐⭐⭐ | 高度安全 | | **公网HTTP(临时)** | ⭐⭐⭐ | 中等安全,建议升级HTTPS | --- ## 📋 测试验证清单 ### ✅ 接口测试 #### 测试1:接口1正常调用 ```bash # 请求 GET http://localhost:8080/iot/labview/device/1001 # 预期结果 - code = 200 - data.encrypted 存在且不为空 - encrypted 是Base64字符串 ``` #### 测试2:接口2正常调用 ```bash # 请求 POST http://localhost:8080/iot/labview/tenant/device Body: {"tenantId":1, "iotDeviceId":1001} # 预期结果 - code = 200 - data.encrypted 存在且不为空 - encrypted 是Base64字符串 ``` #### 测试3:Python解密成功 ```bash # 命令 python 2025-10-18_硬件融合接口解密脚本.py "" # 预期结果 - 输出JSON格式 - 包含 iotDbIp, iotDbPort, iotDbName, Object, Class - 所有字段值正确 ``` #### 测试4:数据库连接成功 ``` 使用解密后的配置连接数据库 # 预期结果 - 连接成功 - 可以执行SQL ``` --- ## ❓ 常见问题 ### Q1:接口返回 "未找到该设备的数据库配置"? **原因**:数据库中没有该设备的配置记录。 **解决方法**: 1. 确认设备ID是否正确 2. 在MES管理后台检查该设备配置是否已创建 3. 确认租户ID是否正确(接口2) --- ### Q2:Python脚本报错 "No module named 'Crypto'"? **原因**:未安装pycryptodome库。 **解决方法**: ```bash pip install pycryptodome ``` 如果安装失败,尝试使用国内镜像: ```bash pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple ``` --- ### Q3:解密失败,提示 "Padding is incorrect"? **原因**:密钥不正确。 **解决方法**: 1. 检查密钥是否为:`YaviiMESpassword` 2. 检查大小写是否正确(必须完全一致) 3. 检查是否有多余的空格 4. 确认密钥长度为16字节 --- ### Q4:解密出来是乱码? **原因**:字符编码不对。 **解决方法**: 1. 确认使用UTF-8编码 2. 不要使用GBK、GB2312等其他编码 --- ### Q5:每次调用接口,encrypted的值都不一样? **答**:这是正常现象! **原因**: - 数据库配置可能有更新 - 或者配置中包含时间戳等动态字段 **验证方法**: 只要能正确解密并连接数据库,就说明没问题。 --- ### Q6:接口1和接口2应该用哪个? **答**:根据业务场景选择。 | 场景 | 推荐接口 | 原因 | |-----|---------|------| | 单租户系统 | 接口1 | 参数简单,只需设备ID | | 多租户系统 | 接口2 | 需要区分不同租户 | | 参数来自URL | 接口1 | GET请求,参数在URL | | 参数来自表单 | 接口2 | POST请求,参数在Body | --- ### Q7:密钥可以修改吗? **答**:可以,但需要同步修改多处。 **修改步骤**: 1. 修改后端Java代码中的密钥(AESUtil.java) 2. 修改Python脚本中的密钥(labview_aes_decrypt.py) 3. 重新编译部署后端 4. 更新所有LabVIEW设备的Python脚本 5. 通知所有使用者 **⚠️ 建议**:非必要不修改,除非有安全需求。 --- ### Q8:需要定期更换密钥吗? **答**:建议定期更换。 **推荐周期**:每3-6个月更换一次 **更换流程**: 1. 生成新的16字节密钥(英文字母+数字) 2. 按Q7的步骤同步修改 3. 选择低峰期进行更换 4. 提前通知所有使用者 --- ### Q9:可以用在线工具解密吗? **答**:可以,但不推荐用于生产环境。 **原因**: - 在线工具会将密文上传到第三方服务器 - 存在密钥泄露风险 **建议**: - 开发测试阶段 → 可以使用在线工具 - 生产环境 → 必须使用本地Python脚本 --- ### Q10:接口响应很慢怎么办? **可能原因**: 1. 网络延迟 2. 数据库查询慢 3. 加密运算耗时 **排查方法**: 1. 检查网络连接(ping服务器) 2. 检查数据库性能(查询时间) 3. 查看后端日志(是否有异常) **优化建议**: - AES加密速度很快(< 5ms),不是性能瓶颈 - 重点优化数据库查询 - 考虑添加缓存机制 --- ## 🚀 升级路径 ### 当前状态(v3.0) ✅ **已完成**: - ✅ 接口1:GET /device/{iotDeviceId} → AES加密 - ✅ 接口2:POST /tenant/device → AES加密 - ✅ Python解密脚本 → 完整可用 - ✅ 完整文档 → 使用指南 **安全等级**:⭐⭐⭐⭐(高) ### 短期优化(可选,1-2周) **可选:添加API Key验证** - 在现有AES加密基础上增加API Key - 双重防护:AES加密 + API Key验证 - 实施时间:2小时 - 效果:进一步提升安全性 ### 中期升级(推荐,3-6个月) **推荐:升级为HTTPS** - 申请SSL证书(免费或付费) - 配置HTTPS - 保留AES加密(双重防护) - 实施时间:6小时 - 效果:达到业界最佳实践 ### 长期优化(持续) 1. **数据库密码加密存储** - 数据库中的密码也进行AES加密 - 查询时解密后返回 2. **密钥轮换机制** - 自动定期更换密钥 - 平滑过渡,无需停机 3. **访问审计日志** - 记录所有接口调用 - 分析异常访问模式 4. **定期安全评估** - 每季度进行安全扫描 - 及时发现并修复漏洞 --- ## 📞 技术支持 ### 遇到问题? **优先级顺序**: 1. ✅ 查看本文档FAQ部分 2. ✅ 检查参数设置是否正确 3. ✅ 测试Python脚本是否正常 4. ✅ 查看后端日志(如有权限) 5. ⚠️ 联系技术支持 ### 联系方式 - 📧 技术支持邮箱:support@yourcompany.com - 💬 内部工单系统 - 📱 技术支持电话:400-xxx-xxxx --- ## 📚 附录 ### A. 快速参数速查表 ``` ┌─────────────────────────────────────┐ │ AES加密参数速查 │ ├─────────────────────────────────────┤ │ 算法:AES │ │ 模式:ECB │ │ 密钥:YaviiMESpassword │ │ 密钥长度:128 bits (16字节) │ │ 填充:PKCS5Padding / PKCS7Padding │ │ 编码:UTF-8 │ │ 格式:Base64 │ │ IV偏移量:不需要(ECB模式) │ └─────────────────────────────────────┘ ``` ### B. 接口快速对照表 | 需求 | 使用接口 | 请求方式 | |-----|---------|---------| | 只知道设备ID | `/device/{id}` | GET | | 知道租户+设备 | `/tenant/device` | POST | | 查所有设备ID | `/deviceIds` | GET | | 按租户查设备 | `/deviceIds/tenant` | GET | ### C. 错误代码对照表 | code | msg | 原因 | 解决方法 | |------|-----|------|---------| | 200 | 操作成功 | 正常 | - | | 500 | 未找到该设备的数据库配置 | 设备不存在 | 检查设备ID | | 500 | 租户ID和设备ID不能为空 | 参数缺失 | 检查请求参数 | | 500 | 数据加密失败 | 后端异常 | 联系技术支持 | ### D. 测试清单 ``` □ 能否正常调用接口? □ 接口返回code是否为200? □ encrypted字段是否存在? □ encrypted是否为Base64格式? □ Python脚本能否解密? □ 解密结果是否为JSON格式? □ 数据库配置信息是否完整? □ 能否用配置连接数据库? □ 能否成功写入数据? ``` ### E. 文件清单 ``` 📁 项目根目录 ├── 📁 .tasks/ │ ├── 📄 2025-10-18_硬件融合接口加密文档.md ← 本文档 │ └── 🐍 labview_aes_decrypt.py ← Python解密脚本 │ ├── 📁 yjh-mes/src/main/java/cn/sourceplan/ │ ├── 📁 common/utils/ │ │ └── ☕ AESUtil.java ← Java加密工具类 │ └── 📁 iot/controller/ │ └── ☕ IotLabviewConfigController.java ← 接口Controller ``` --- ## ✅ 文档更新记录 | 版本 | 日期 | 更新内容 | 更新人 | |------|------|---------|--------| | v1.0 | 2025-10-14 | 初始版本 | 开发团队 | | v2.0 | 2025-10-18 | 实施AES加密,增加接口2 | 开发团队 | | v3.0 | 2025-10-18 | 接口1也加密,重构文档 | 开发团队 | | v4.0 | 2025-10-18 | 所有8个接口全面加密,统一响应格式 | 开发团队 | --- **文档版本**:v4.0 **更新日期**:2025-10-18 **下次审阅**:2025-11-18 **文档负责人**:MES开发团队 **当前实施状态**:✅ 所有8个LabVIEW接口已全面加密 --- ## 🎯 总结 ### 核心要点 1. **8个加密接口** → 全面保护数据库配置安全 2. **5个加密字段** → IP、端口、库名、账号、密码 3. **1个密钥** → YaviiMESpassword(16字节) 4. **0个偏移量** → ECB模式不需要IV 5. **Python解密** → 简单易用,一行命令 ### 已加密接口列表 ✅ **全部8个LabVIEW接口已加密**: 1. `/device/{iotDeviceId}` - 通过设备ID查询配置 2. `/tenant/device` - 通过租户+设备查询配置 3. `/list` - 查询配置列表 4. `/{id}` - 获取配置详情 5. `/targetTable/{id}` - 获取目标表配置 6. `/testConnection` - 测试数据库连接 7. `/deviceIds` - 查询所有设备ID 8. `/deviceIds/tenant` - 按租户查询设备ID ### 使用流程 ``` 调用接口 → 获取encrypted → Python解密 → 连接数据库 ``` ### 安全建议 - ✅ 内网、VPN环境 → 当前方案足够安全 - ⚠️ 公网HTTP环境 → 临时方案,建议升级HTTPS - 🔐 长期方案 → HTTPS + AES(双重防护) ### 记住这些 - 密钥:`YaviiMESpassword`(严格区分大小写) - 模式:ECB(不需要偏移量) - 脚本:`python labview_aes_decrypt.py ""` - 支持:遇到问题先查FAQ,再联系技术支持 **所有接口已全面加密,安全等级达到最高!** 🎉