You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 lines
5.1 KiB

2 days ago
# 加密功能快速开始指南
## 🚀 5分钟快速配置
### 步骤 1: 安装依赖
打开终端,在项目根目录执行:
```bash
npm install crypto-js jsencrypt
```
### 步骤 2: 配置密钥
编辑 `config.js`,修改以下配置:
```javascript
export default {
baseUrl: 'http://localhost:8080',
clientId: 'e5cd7e4891bf95d1d19206ce24a7b32e',
// ⭐ 开启加密(生产环境设为 true开发环境可设为 false
enableEncrypt: true,
// ⭐ 配置 RSA 公钥(需要与后端保持一致)
rsaPublicKey: `YOUR_RSA_PUBLIC_KEY_HERE`,
rsaPrivateKey: '',
// ... 其他配置
}
```
**重要:** 将 `YOUR_RSA_PUBLIC_KEY_HERE` 替换为实际的 RSA 公钥!
### 步骤 3: 在接口中启用加密
以登录接口为例,在 `api/login.js` 中:
```javascript
// 修改前
export function login(username, password, code, uuid) {
return request({
url: '/auth/login',
method: 'post',
data: { username, password, code, uuid }
})
}
// 修改后(仅添加一行)
export function login(username, password, code, uuid) {
return request({
url: '/auth/login',
method: 'post',
data: { username, password, code, uuid },
encrypt: true // ⭐ 添加这一行
})
}
```
### 步骤 4: 测试
运行项目,调用加密接口,检查:
1. **请求头**:是否包含 `encrypt-key`
2. **请求体**:是否为加密字符串
3. **响应**:是否能正常解密
---
## 📋 文件清单
改造完成后,你的项目应该包含以下文件:
```
stm32-iot-app/
├── utils/
│ ├── request.js ✅ 已改造(支持加密)
│ └── crypto.js ✅ 新增(加密工具类)
├── config.js ✅ 已更新(加密配置)
├── api/
│ ├── login.js ⚠️ 需手动添加 encrypt: true
│ └── login.encrypt.example.js 📄 示例文件
├── ENCRYPT_GUIDE.md 📄 详细使用文档
├── INSTALL_DEPENDENCIES.md 📄 依赖安装说明
└── QUICK_START.md 📄 本文件
```
---
## 🔑 如何获取 RSA 公钥
### 方法 1: 从后端获取
联系后端开发人员,获取 RuoYi 项目的 RSA 公钥,位置:
```
ruoyi-common/
ruoyi-common-encrypt/
src/main/java/org/dromara/common/encrypt/
```
### 方法 2: 在线生成
访问工具网站:
- https://tool.hiofd.com/sm2-key-gen/
- http://www.metools.info/code/c80.html
**注意:** 生成的密钥对需要与后端保持一致!
---
## 🎯 推荐配置策略
### 开发环境
```javascript
// config.js
export default {
enableEncrypt: false, // 关闭加密,方便调试
// ...
}
```
### 生产环境
```javascript
// config.js
export default {
enableEncrypt: true, // 开启加密,保护数据
rsaPublicKey: `实际的公钥`,
// ...
}
```
### 条件配置
```javascript
// config.js
const isDev = process.env.NODE_ENV === 'development'
export default {
enableEncrypt: !isDev, // 开发环境关闭,生产环境开启
// ...
}
```
---
## ✅ 哪些接口需要加密?
建议对以下接口启用加密:
- ✅ 登录/注册接口
- ✅ 密码相关接口(修改密码、重置密码)
- ✅ 个人信息修改接口
- ✅ 支付相关接口
- ✅ 敏感数据查询接口
不建议加密的接口:
- ❌ 公开数据查询GET 请求不支持加密)
- ❌ 验证码获取
- ❌ 字典数据查询
- ❌ 系统配置获取
---
## 🔧 调试技巧
### 1. 查看加密请求
在浏览器 Network 面板查看请求:
```
Request Headers:
encrypt-key: MIGfMA0GCSqGS... (加密的 AES 密钥)
ClientID: e5cd7e4891bf95d1d19206ce24a7b32e
Request Payload:
U2FsdGVkX1... (加密的数据)
```
### 2. 临时关闭加密
```javascript
// 方法 1: 全局关闭
config.enableEncrypt = false
// 方法 2: 单个接口关闭(移除 encrypt: true
export function login(data) {
return request({
url: '/login',
method: 'post',
data: data
// encrypt: true // 注释掉这行
})
}
```
### 3. 查看错误日志
加密失败时会在控制台输出详细错误:
```
解密失败: Error: ...
```
---
## ❓ 常见问题
### Q1: 提示"找不到模块 crypto-js"
**答:** 未安装依赖,执行 `npm install crypto-js jsencrypt`
### Q2: 数据解密失败?
**答:**
1. 检查公钥是否与后端一致
2. 检查后端是否支持加密
3. 检查 `enableEncrypt` 是否为 `true`
### Q3: 小程序端能用吗?
**答:** 需要测试验证,某些小程序平台可能不支持 Node.js 模块,详见 `INSTALL_DEPENDENCIES.md`
### Q4: 性能影响大吗?
**答:** 加密会增加少量计算时间(通常 < 100ms
---
## 📚 更多文档
- [ENCRYPT_GUIDE.md](./ENCRYPT_GUIDE.md) - 完整使用指南
- [INSTALL_DEPENDENCIES.md](./INSTALL_DEPENDENCIES.md) - 依赖安装详解
- [api/login.encrypt.example.js](./api/login.encrypt.example.js) - 代码示例
---
## 🆘 技术支持
如有问题,请:
1. 查看上述文档
2. 检查控制台错误日志
3. 参考 RuoYi 官方文档http://doc.ruoyi.vip/
4. 联系项目负责人
---
**祝你配置顺利!** 🎉