简洁、安全、易用的端到端加密文件传输解决方案
安全传输(Secure Transfer) 是一个现代化的"临时房间"文本/文件传输工具,专注于提供安全、便捷的文件共享体验。
- 🏠 房间系统:基于 PIN 码的临时房间,支持多人协作
- 🔐 端到端加密:可选的 E2EE 加密,保护数据安全
- 📁 文件传输:支持小文件加密传输,大文件快速传输
- 💬 实时消息:支持文本消息和语音消息
- 👥 在线状态:实时显示房间内活跃用户
- 🎨 现代化UI:响应式设计,支持深色/浅色主题
- ⚡ 自动清理:1小时无活动自动清理,保护隐私
- 端到端加密:使用 AES-GCM 256位加密
- 密钥管理:支持密钥消息一键导入和消费
- 隐私保护:所有数据临时存储,定期自动清理
- 明文可选:默认明文通信,可一键启用加密
- HTML5:语义化结构,无障碍支持
- CSS3:现代化设计系统,CSS变量,响应式布局
- Vanilla JavaScript:原生ES6+,模块化架构
- Web Crypto API:浏览器原生加密实现
- PHP 7.4+:轻量级后端服务
- 文件系统:基于文件的数据存储
- RESTful API:标准化API接口设计
secure-transfer/
├── 前端文件
│ ├── index.html # 主页面 - 现代化UI结构
│ ├── style.css # 样式文件 - 1900+行现代化CSS
│ ├── app.js # 核心逻辑 - 完整的应用功能
│ ├── crypto.js # 加密模块 - Web Crypto封装
│ └── enhanced-ui.js # UI增强 - 主题、动画、交互管理
├── 后端API
│ ├── config.php # 基础配置和工具函数
│ ├── get-history.php # 获取聊天历史
│ ├── send-message.php # 发送消息
│ ├── upload.php # 文件上传
│ ├── download.php # 文件下载
│ ├── clear-room.php # 清空房间
│ ├── client-ping.php # 客户端心跳
│ ├── consume-message.php # 消费密钥消息
│ ├── set-encryption.php # 加密设置
│ └── status-check.php # 系统状态检查
├── 数据目录
│ ├── rooms/ # 房间数据存储
│ └── uploads/ # 上传文件存储
└── readme.md # 项目文档
- Web服务器:Apache/Nginx 或 PHP内置服务器
- PHP版本:7.4 或更高版本
- 浏览器:支持 Web Crypto API 的现代浏览器
-
下载项目
git clone https://github.com/Jieoz/secure-transfer.git cd secure-transfer -
启动服务器
# 使用PHP内置服务器(开发环境) php -S localhost:8080 # 或者配置到Apache/Nginx(生产环境)
-
访问应用
http://localhost:8080/index.html
- 创建房间:输入6位PIN码或自定义房间号
- 邀请协作者:分享房间链接给其他用户
- 开始传输:发送消息或上传文件
- 启用加密:可选开启端到端加密保护
- 简洁优雅:现代化扁平设计,减少视觉干扰
- 响应式:完美适配桌面、平板、手机设备
- 无障碍:支持键盘导航和屏幕阅读器
- 主题支持:自动适配系统主题,支持手动切换
- 主色调:科技蓝(#3b82f6)传达安全感
- 成功色:翠绿色(#22c55e)表示安全状态
- 警告色:琥珀色(#f59e0b)提示注意事项
- 错误色:红色(#ef4444)表示错误状态
- 微交互:精心设计的悬停和点击反馈
- 流畅过渡:使用现代缓动函数的平滑动画
- 性能优化:硬件加速,避免布局抖动
- PIN码系统:6位数字快速加入
- 自定义房间:支持字母数字组合
- 房间链接:一键分享房间访问链接
- 自动清理:1小时无活动自动清理数据
- 可选加密:默认明文,可一键启用E2EE
- AES-GCM:使用256位密钥的AES-GCM加密
- 密钥管理:支持密钥分享和导入
- 文件加密:小文件(≤32MB)自动加密
- 多文件上传:支持批量文件选择
- 拖拽上传:直观的拖拽上传体验
- 进度显示:实时显示上传进度
- 文件预览:支持常见文件格式预览
- 文本消息:支持富文本和表情符号
- 语音消息:录制和播放语音消息
- 在线状态:实时显示活跃用户列表
- 消息历史:持久化存储聊天记录
// 使用Web Crypto API实现AES-GCM加密
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"]
);- 临时存储:所有数据仅临时存储
- 自动清理:定期清理过期房间数据
- 无日志:不记录用户行为日志
- 本地优先:敏感操作在客户端完成
| 浏览器 | 最低版本 | Web Crypto | 文件API | 响应式 |
|---|---|---|---|---|
| Chrome | 63+ | ✅ | ✅ | ✅ |
| Firefox | 57+ | ✅ | ✅ | ✅ |
| Safari | 11+ | ✅ | ✅ | ✅ |
| Edge | 79+ | ✅ | ✅ | ✅ |
- 响应式布局:完美适配各种屏幕尺寸
- 触摸优化:优化触摸目标大小和间距
- 手势支持:支持拖拽上传等手势操作
- PWA就绪:可作为渐进式Web应用安装
# 启动开发服务器
php -S localhost:8080
# 访问主应用
http://localhost:8080/index.html
编辑 api/config.php 修改基础配置:
// 修改文件大小限制
define('MAX_FILE_SIZE', 500 * 1024 * 1024); // 500MB
// 修改房间清理时间
define('ROOM_CLEANUP_TIME', 3600); // 1小时在 style.css 中修改CSS变量:
:root {
--primary-500: #your-color;
--border-radius: 12px;
/* 自定义其他设计变量 */
}POST /api/send-message.php
Content-Type: application/json
{
"room": "123456",
"message": "Hello World",
"type": "text",
"encrypted": false
}POST /api/upload.php
Content-Type: multipart/form-data
room: 123456
file: [File Object]
encrypted: falseGET /api/get-history.php?room=123456&after=1234567890- Fork项目并创建特性分支
- 提交代码遵循代码规范
- 编写测试确保功能正常
- 提交PR并描述修改内容
- HTML:语义化标签,无障碍属性
- CSS:BEM命名规范,CSS变量
- JavaScript:ES6+语法,JSDoc注释
- PHP:PSR-4标准,安全编码
本项目采用 MIT协议 开源。
感谢所有为这个项目贡献代码、建议和反馈的开发者!