# 加密功能快速开始指南 ## 🚀 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. 联系项目负责人 --- **祝你配置顺利!** 🎉