# veillink **Repository Path**: sukizi/veillink ## Basic Information - **Project Name**: veillink - **Description**: 基于SpringBoot的加密实时通讯系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-19 - **Last Updated**: 2026-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, WebSocket, Java, MyBatis, MySQL ## README # Veillink - 端对端加密即时通讯应用 Veillink 是一个基于 Spring Boot 开发的端对端加密即时通讯应用,提供安全的聊天功能,支持好友管理、实时消息传递和消息加密。 ## 功能特性 ### 🔐 安全认证 - 用户注册与登录 - JWT Token 身份验证 - 密码加密存储 ### 👥 好友管理 - 用户搜索 - 发送好友请求 - 接受/拒绝好友请求 - 查看好友列表和待处理请求 ### 💬 加密聊天 - 端对端 AES 加密消息 - WebSocket 实时消息推送 - 聊天记录查询 - 消息已读状态 - 消息删除功能 - 消息过期自动清理 ### 🔑 密钥管理 - 密钥自动生成 - 密钥交换机制 - 密钥过期自动更新 ## 技术栈 - **后端**: Spring Boot 2.7.x - **安全**: Spring Security + JWT - **数据库**: MyBatis + MySQL - **WebSocket**: Spring WebSocket + STOMP - **前端**: Thymeleaf + 原生 JavaScript - **加密**: AES-256 ## 项目结构 ``` com.suki.veillink ├── config/ # 配置类 │ ├── SecurityConfig.java │ └── WebSocketConfig.java ├── controller/ # 控制器 │ ├── AuthController.java │ ├── ChatController.java │ ├── FriendController.java │ └── PageController.java ├── dto/ # 数据传输对象 ├── entity/ # 实体类 ├── mapper/ # MyBatis 映射器 ├── security/ # 安全相关 ├── service/ # 业务逻辑 ├── util/ # 工具类 └── websocket/ # WebSocket 处理 ``` ## 快速开始 ### 环境要求 - JDK 8+ - Maven 3.6+ - MySQL 5.7+ ### 配置步骤 1. **克隆项目** ```bash git clone https://gitee.com/sukizi/veillink.git cd veillink ``` 2. **配置数据库** 创建数据库并导入 `src/main/resources/db/schema.sql` 修改 `src/main/resources/application.yml` 中的数据库配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/veillink?useSSL=false&serverTimezone=UTC username: your_username password: your_password ``` 3. **配置 JWT 密钥** 在 `application.yml` 中设置 JWT 密钥: ```yaml jwt: secret: your-256-bit-secret-key-here expiration: 86400000 ``` 4. **运行项目** ```bash mvn spring-boot:run ``` 5. **访问应用** 打开浏览器访问: `http://localhost:8080` ## API 接口 ### 认证接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/auth/login | 用户登录 | | POST | /api/auth/register | 用户注册 | | GET | /api/auth/me | 获取当前用户信息 | ### 好友接口 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/friends/search | 搜索用户 | | POST | /api/friends/add | 添加好友 | | POST | /api/friends/confirm/{requestId} | 确认好友请求 | | GET | /api/friends/list | 获取好友列表 | | GET | /api/friends/pending | 获取待处理请求 | ### 聊天接口 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/chat/message/send/{friendId} | 发送消息 | | GET | /api/chat/history/{friendId} | 获取聊天记录 | | GET | /api/chat/sessions | 获取聊天会话列表 | | POST | /api/chat/read/{friendId} | 标记消息已读 | | DELETE | /api/chat/message/{messageId} | 删除单条消息 | | DELETE | /api/chat/messages/{friendId} | 删除聊天记录 | | POST | /api/chat/key/{friendId} | 保存用户密钥 | | GET | /api/chat/key/{friendId} | 获取用户密钥 | | GET | /api/chat/key/expired/{friendId} | 检查密钥是否过期 | ## WebSocket 端点 - 连接地址: `/ws` - 消息代理: `/topic`, `/queue` - 认证: 通过 JWT Token 进行身份验证 ### 消息主题 | 主题 | 描述 | |------|------| | /topic/chat.{userId} | 用户聊天消息 | | /topic/online | 用户在线状态 | | /topic/key.{userId} | 密钥交换 | ## 安全性 - 密码使用 BCrypt 加密存储 - 通信使用 JWT Token 验证 - 消息内容使用 AES-256 加密 - 密钥定期自动更新 - 消息支持过期自动销毁 ## 许可证 MIT License