Batmancodes1/ChessCipher
GitHub: Batmancodes1/ChessCipher
将秘密信息编码为合法国际象棋PGN棋谱的隐写工具,支持加密、诱饵和跨平台解码。
Stars: 1 | Forks: 0
# ♜ ChessCipher — 国际象棋隐写引擎
将秘密信息隐藏在合法的国际象棋对局中。将文本编码为 PGN,在 Chess.com 或 Lichess 上进行对局,仅分享对局记录——另一个人即可使用此应用解码出隐藏的信息。
## 功能
| 功能 | 描述 |
|---|---|
| **PGN 通道** | 高容量编码 —— 完整的文本信息隐藏在行棋序列中 |
| **FEN 通道** | 紧凑编码 —— 密钥、指针或短信息隐藏在棋盘局面中 |
| **公开模式** | 无需密钥 —— 任何拥有 PGN 的人均可解码 |
| **密钥模式** | 解码需要匹配的密码 |
| **隐藏密钥模式** | 密钥由 FEN 哈希值派生 —— 从不传输 |
| **诱饵系统** | 错误/无密钥时返回合理的国际象棋评注,而不是错误提示 |
| **影院式解码** | 动态棋盘复盘,配合打字机揭示效果、音效和进度条 |
| **死信箱** | 生成参考卡 —— 仅分享指针,不分享数据 |
| **跨平台** | 可解码来自 Chess.com、Lichess、Chess24 或任何来源的 PGN |
| **时间锁(可选)** | 密钥每日更改 —— 同一 PGN 每天产生不同的输出 |
## 技术栈
- **原生 HTML/CSS/JS** —— 零构建步骤,在任何浏览器中均可运行
- **chess.js 0.10.3** —— 合法着法生成、PGN 解析、棋盘状态
- **Web Crypto API** —— 基于哈希密钥派生的 XOR 流密码
- **Web Audio API** —— 合成落子音效(无需额外的资源文件)
- **Google Fonts** —— Cinzel(展示字体),IBM Plex Mono(代码字体),Inter(UI字体)
## 本地运行
### 前置条件
- 任何现代浏览器(Chrome、Firefox、Edge、Safari)
- 本地 Web 服务器(可选,但推荐使用)
### 选项 A —— 直接打开文件(最简单)
```
# 1. 下载或 clone 项目
git clone https://github.com/your-repo/chesscypher.git
cd chesscypher
# 2. 在浏览器中打开 index.html
open index.html # macOS
start index.html # Windows
xdg-open index.html # Linux
```
### 选项 B —— 本地服务器(推荐)
**使用 Python(无需安装):**
```
cd chesscypher
python3 -m http.server 8080
# 打开: http://localhost:8080
```
**使用 Node.js:**
```
npm install -g serve
serve .
# 打开: http://localhost:3000
```
**使用 VS Code:**
安装 "Live Server" 扩展 → 右键点击 `index.html` → "Open with Live Server"
### 如何访问
打开浏览器并访问 `http://localhost:8080`(或您的服务器正在使用的任何端口)。
## 项目结构
```
chesscypher/
├── index.html # Complete application — all HTML, CSS, and JS in one file
├── README.md # This file
├── DEPLOYMENT.md # Deployment guide
└── SAMPLE_DATA.md # Test data and examples
```
### 文件分解
**`index.html`** 包含了所有内容:
- **CSS** —— 暗黑影院主题,玻璃拟态面板,动画效果,响应式布局
- **国际象棋引擎** —— 从 CDN (cdnjs.cloudflare.com) 导入 `Chess.js`
- **隐写核心** —— `encodeMessageToPGN()`、`decodePGNToMessage()`、`encodeMsgToFEN()`、`decodeFENtoMsg()`
- **加密层** —— `xorCrypt()`、`simpleHash()`、`getKey()` —— 采用基于哈希密钥的 XOR 流密码
- **诱饵系统** —— `getDecoy()` —— 基于 PGN+密钥哈希进行确定性的诱饵选择
- **影院式 UI** —— `runDecodeAnimation()`、`revealMessage()`、棋盘渲染、声音合成
- **死信箱** —— `generateDeadDrop()` —— 参考卡生成器
- **UI 页面** —— 编码、解码、死信箱、信息选项卡
标签:CMS安全, FEN通道, JavaScript, meg, PGN解析, Vanilla JS, Web Crypto API, XOR流密码, 信息安全, 信息隐藏, 免构建, 加密通信, 去中心化通信, 后端开发, 国际象棋, 安全通信, 密码学, 开源, 手动系统调用, 数据编码, 数据解码, 暗网通信, 棋盘博弈, 端到端加密, 诱饵系统, 隐写术, 隐蔽信道