# 申报书：toolsfx-moonbit —— 纯 MoonBit 密码学与 CTF 工具箱（ToolsFx 移植）

**仓库**：<https://github.com/2d5rrr333/toolsfx-moonbit>
**参赛**：2026 MoonBit 国产基础软件生态开源大赛 · 8 月黑客松
**语言/许可**：MoonBit / ISC（开源）

## 一、项目现有基础

本项目是对成熟开源项目 **ToolsFx**（Kotlin/JavaFX 密码学工具箱，7k+ star，ISC 许可）核心能力的 MoonBit 移植，同时复用 MoonBit 生态内成熟的纯 MoonBit 密码原语库 **mooncry**（cc06b/mooncry v0.20.0，Apache-2.0，471 个标准向量测试，覆盖 SHA 全家族/AES 全模式/ChaCha20/HMAC/KDF 等），在其之上构建 ToolsFx 中生态尚缺的部分。项目规划与设计文档（国密/古典密码/编码工具/Web 工作台四大能力的规格与技术设计）已完成并随仓库提交。

## 二、本次计划开发或新增的内容

1. **国密算法库（生态空白）**：SM3 摘要（GB/T 32905-2016）、SM4 分组密码 + ECB/CBC/CTR/GCM 模式（GB/T 32907-2016）、SM2 椭圆曲线签名与公钥加密（GB/T 32918 系列，基于 core/bigint）——mooncakes.io 上首个纯 MoonBit 国密库
2. **CTF/古典密码工具包（生态空白）**：约 15 种经典密码（Caesar/ROT 家族/Vigenère/Playfair/ADFGX/栅栏等）+ 约 10 种奇门编码（Brainfuck/盲文/01248/社会主义核心价值观等）+ 密文自动识别（词频评分）
3. **编码工具库**：Base16/32/58/58Check/62/85/91、Punycode（RFC 3492）、URL、Unicode/JS 转义、任意进制（2-36）、QP/UU/XX
4. **浏览器可视化工作台**：wasm-gc 编译 + 静态 HTML/JS 前端（ToolsFx 式交互界面），单一 JSON dispatch 接口，部署 GitHub Pages 在线演示

## 三、预期目标与技术路线

- 库层全部纯 MoonBit 实现（无 FFI），包依赖边界隔离：encoding（零依赖）→ classical → sm（仅 core/bigint）→ workbench（聚合 + mooncry 复用）
- 测试三层：国家标准（GB/T）/RFC 官方向量 → quickcheck 往返性质 → 非法输入负例
- CI：moon check/test --deny-warn、fmt --check、info 四步 + wasm-gc 构建 + GitHub Pages 自动部署
- 发布 mooncakes.io，提供 `moon run` 可执行示例与在线 Web 工作台

## 四、预计完成的功能、测试和文档

- 功能：国密 SM2/SM3/SM4、25+ 古典密码与奇门编码、15+ 编码格式、自动识别、Web 工作台（中英双语）
- 测试：GB/T 与 RFC 官方向量全覆盖 + 属性测试 + dispatch 端到端测试，`moon test --deny-warn` 全绿
- 文档：中英双语 README（功能矩阵、示例、移植声明）、兼容性对照文档、性能边界说明

## 五、移植来源声明

- 原项目：**ToolsFx**（作者 Leon406）<https://github.com/Leon406/ToolsFx>，**ISC License**
- 移植范围：编解码、古典密码/CTF、杂凑、对称密码四类模块的**行为对齐移植**（不复制源码，按 MoonBit 习惯重新实现）；可视化工作台承接其交互形态
- 暂不移植：JavaFX 桌面 GUI、二维码/OCR、网络扫描、依赖在线接口的编码
- 依赖声明：cc06b/mooncry（Apache-2.0）作为通用密码原语依赖，另行声明
