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流密码, 信息安全, 信息隐藏, 免构建, 加密通信, 去中心化通信, 后端开发, 国际象棋, 安全通信, 密码学, 开源, 手动系统调用, 数据编码, 数据解码, 暗网通信, 棋盘博弈, 端到端加密, 诱饵系统, 隐写术, 隐蔽信道