# homework **Repository Path**: deeyie/homework ## Basic Information - **Project Name**: homework - **Description**: 作业作业作业作业作业作业作业作业作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-12 - **Last Updated**: 2025-10-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SafeChat - 安全聊天应用 ## 项目简介 SafeChat 是一个具有安全特性的即时通讯应用,支持用户间的安全聊天和文件传输功能。 ## 功能特性 ### 核心功能 - 用户注册与登录系统 - 频道内即时通讯 - 安全的文件传输功能 - 用户在线状态显示 ### 安全特性 - RSA 2048 位密钥加密通信和签名校验 - 文件存储和传输 - 使用密码加密保护用户私钥 - 进行文件安全扫描 - 密码加盐哈希存储 ## 技术栈 - **编程语言**: Python 3.7+ - **GUI 框架**: Tkinter - **网络通信**: Socket - **数据存储**: SQLite (safechat.db) - **加密库**: Cryptography - **文件传输**: 自定义协议 + tqdm 进度显示 ## 安装指南 ### 前提条件 - Python 3.7 或更高版本 - 安装 pip 包管理器 ### 安装依赖 ```bash pip install -r requirements.txt ``` 依赖包包括: - chardet==4.0.0 - idna==3.4 - netifaces==0.11.0 - numpy==1.24.3 - opencv-python==4.8.0.74 - Pillow==10.0.0 - requests==2.31.0 - urllib3==1.26.16 - cryptography==41.0.3 - tqdm ## 使用说明 ### 启动服务器 在项目根目录下执行: ```bash python -m src.server.server ``` ### 启动客户端 在项目根目录下执行: ```bash python -m src.client.client ``` ### 基本操作 1. **注册账户**: 首次使用需先注册账户 2. **登录系统**: 使用注册的账户登录 3. **发送消息**: 在聊天界面输入消息并发送 4. **传输文件**: 通过文件传输功能选择文件发送 ## 项目结构 ``` homework/ ├── src/ │ ├── client/ # 客户端代码 │ │ └── client.py # 客户端主程序 │ ├── server/ # 服务器代码 │ │ ├── database.py # 数据库管理 │ │ └── server.py # 服务器主程序 │ └── security.py # 安全模块(集成密钥管理和安全校验) ├── requirements.txt # 项目依赖 └── README.md # 项目文档 ``` ## 安全机制 1. **密钥管理**: - 每个用户生成唯一的 RSA 密钥对 - 私钥使用用户密码加密存储 - 公钥存储在数据库中用于加密通信 2. **通信安全**: - 消息使用 RSA 和 AES 混合加密 - 文件传输过程加密保护 3. **数据存储**: - 密码使用加盐哈希存储 - 敏感数据加密后存储 ## 开发说明 ### 消息格式 应用使用 JSON 格式进行消息传递,基本格式如下: ```json { "action": "行为操作(login, register, get_online_users等)", "message": "操作的中文消息", "sender": "发送者用户名", "receiver": "目标用户名", "data": "具体信息", "time": "2023-12-31 23:59:59" } ``` ### 端口设置 - 消息通信端口: 8848 - 文件传输端口: 8888 ## 注意事项 1. 首次启动服务器时会初始化数据库 2. 密钥文件存储在`src/local_cache/keys/`目录下,请妥善保管 3. 确保服务器和客户端使用相同的端口配置