# 时间匣 **Repository Path**: cloud-lumiere/Time-Capsule ## Basic Information - **Project Name**: 时间匣 - **Description**: 密码是关于时间和信任的游戏 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-01 - **Last Updated**: 2026-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ? 时间匣 TimeCapsule 本地端到端加密信件应用。两人各自运行此 Flask 应用,每日互相发送一封加密信件,可选择性交换密钥实现**延迟阅读**和**部分揭露**。 ## 原理 1. 每封信使用独立的 AES-256-GCM 密钥加密 2. 发送方保存密钥,密文通过外部渠道(聊天软件、云盘等)发送 3. 接收方保存密文,但**无法解密**直到获得密钥 4. 发送方可**选择性**地分享某几天的密钥,逐步解密 ## 功能 | 功能 | 说明 | |------|------| | ?? 写信 | 每天撰写一封信,自动 AES-256-GCM 加密 | | ? 接收 | 粘贴、上传或拖拽 `.asc` 密文文件(支持批量) | | ? 收件箱 | 查看收到的所有密文及解密状态 | | ? 已发送 | 随时解密查看自己发出的信件 | | ? 密钥导出 | 选择部分日期导出密钥 JSON(可选口令加密) | | ? 密钥导入 | 导入伙伴密钥(支持批量),自动解密对应密文 | | ? 重新扫描 | 手动扫描收件箱并自动解密 | | ?? 重置 | 清空所有数据并重新设置用户名 | ## 快速开始 ```bash # 安装依赖 pip install flask flask-sqlalchemy pycryptodome # 启动 python app.py ``` 首次启动会自动打开浏览器到设置页,输入用户名后即可使用。 **或直接双击 `start.bat`**(Windows)。 ## 文件结构 ``` Time-capsule/ ├── app.py # Flask 主应用 ├── start.bat # Windows 一键启动 ├── static/ │ └── style.css # 样式 ├── templates/ │ ├── layout.html # 基础模板 │ ├── setup.html # 首次设置页 │ ├── index.html # 首页仪表盘 │ ├── compose.html # 写信 │ ├── compose_result.html # 写信结果 │ ├── sent.html # 已发送列表 │ ├── receive.html # 接收密文 │ ├── inbox.html # 收件箱 │ ├── read.html # 阅读信件 │ ├── keys.html # 密钥管理 │ └── reset.html # 重置确认 ├── letters/ # 自动创建 │ ├── sent/ # 发出的密文 .asc │ ├── inbox/ # 收到的密文 .asc │ └── decrypted/ # 解密后的明文 .txt └── instance/ └── config.json # 用户名配置 ``` ## 加密格式 - **算法**:AES-256-GCM - **载荷格式**:`nonce(12B) + ciphertext + tag(16B)` → Base64 - **密钥文件**:JSON,可选用口令再次 AES 加密 - **文件名**:`keys_<用户名>_[_encrypted].json` ## 典型使用流程 ``` Alice Bob │ │ ├─ 写信 → 加密 ──密文──→ 接收,等待密钥 │ │ ├─ 导出某日密钥 ──JSON──→ 导入密钥 → 自动解密 │ │ │ └─ 阅读解密信件 │ └─ 已发送中可随时查看自己的信件 ``` ## 所有权 星云光君 Lumin 月夜语者 Nuit