本项目是 gchq/CyberChef 的简体中文汉化分支, 在上游 v11.5.0 完整源码的基础上,仅对面向用户的文案做本地化, 不修改任何算法实现。
英文原版说明见 README_UPSTREAM.md。
| 汉化层面 | 覆盖情况 | 说明 |
|---|---|---|
| 操作说明(description) | 505 / 505 | 含变量插值的说明已单独还原,避免破坏模板求值 |
| 参数名(args[].name) | 1061 / 1294(82.0%) | 其余为刻意保留英文的技术标识符 |
| 分类名(Categories) | 17 / 17 | 界面显示中文,DOM id 保持英文(渲染层查表) |
| 界面文案(index.html) | 259 / 260 | 菜单、按钮、提示、帮助、设置项等 |
| 运行期生成的界面文案 | 已覆盖 | 快捷键表(#keybList)、帮助弹窗标题、输入 / 输出状态栏(长度、行数、光标偏移、字符编码、行尾序列、烘焙耗时) |
刻意保留英文的内容(不汉化,属设计选择):
- 操作名称(如
To Base64、AES Decrypt)—— 它是配方(Recipe)的标识符, 汉化会导致链接、配方导入导出、.chef文件全部失效。 - 参数取值(如
CBC、ECB、Hex、UTF8)—— 同属功能值,不可翻译。 - 密码学标识符(
Key、IV、Salt、Nonce、sBox、MAC、GCM Tag等) —— 与上游习惯保持一致,便于对照英文资料。 - 真实字符集名(
UTF-8、Windows-1251 Cyrillic、Simplified Chinese GBK…) —— 是 IANA 字符集标识,且被 UI 测试用link text选择器定位。 - 行尾代码(
LF/CR/CRLF/LS/PS…)—— 写进 URL 参数(ieol=/oeol=) 与状态栏.eol-value,UI 测试直接断言其文本。 - 快捷键的键位标识(
Alt/Opt/Win/Cmd、Ctrl+Alt+f、RightArrow…) —— 与parseInput()的switch (e.code)分支一一对应,改了就对不上真实按键。 - 提示条 / 弹窗文案(
app.alert(...))—— 见下文「刻意不汉化的部分」。
汉化通过直接改写源码中的字符串字面量 + 一层渲染期查表实现,差异收敛在以下范围:
src/core/operations/*.mjs # 505 个操作的说明(description)
src/web/ArgNameZh.mjs # 参数名中文显示词典(575 条,渲染层查表)
src/web/ArgHintZh.mjs # 参数提示中文显示词典(14 条,渲染层查表)
src/web/CategoryZh.mjs # 分类名中文显示词典(17 条,渲染层查表)
src/web/HTMLIngredient.mjs # 参数名:this.name(中文显示)+ this.argName(英文原名)
src/web/HTMLCategory.mjs # 分类:this.name(中文显示)+ this.catId(英文原名,用于 DOM id)
src/web/html/index.html # 界面文案 + <html lang="zh-cmn-Hans">
src/web/App.mjs # 左侧栏「收藏」分类的帮助文案
src/web/waiters/BindingsWaiter.mjs # 快捷键表(#keybList,整表由 JS 模板生成)+ 帮助弹窗标题
src/web/utils/statusBar.mjs # 输入 / 输出状态栏全部文案(渲染层查表,见下表)
参数名与分类名都不在源码层翻译,只在界面渲染时查表显示中文。 它们同时是 Node.js API 的传参键、报错信息的一部分、DOM id 与样式选择器的来源、 以及上游测试的断言依据——在源码层改动会连带破坏这四处契约。
状态栏的 Input / Output 也不在源码层翻译,原因同上:
statusBar.mjs 有两处功能判断依赖它
(updateTiming() 的 if (this.label === "Output" && this.timing)、
constructRHS() 的 if (this.label === "Input")),
因此新增 labelZh 只用于拼渲染文案,label 本身保持英文。
行尾序列名另建 EOL_NAME_ZH 而非改 editorUtils.mjs 的 eolCodeToName,
因为后者被 InputWaiter / OutputWaiter 的英文提示条复用。
另含 2 处 Windows 平台构建兼容性修复(webpack.config.js):
上游的正则使用了只匹配正斜杠的写法,在 Windows 的反斜杠路径下会失配,
导致构建报错。已改为字符类写法 [\\/] 以同时兼容两个平台。
| 文件 | 改动原因 |
|---|---|
tests/node/tests/nodeApi.mjs |
3 个 chef.help 断言硬编码英文说明原文,汉化后必然失败。已改为语言无关 / 中文等效断言,被测逻辑与断言强度均未降低。 |
tests/browser/browserUtils.js |
烘焙按钮文本断言由 "BAKE!" 同步为「烘焙!」。 |
tests/browser/01_io.js |
7 处 .chr-enc-value 断言由 "Raw Bytes" 同步为「原始字节」。下拉列表中真实字符集名(UTF-8 等)未动,其 link text 仍是 setChrEnc() 的定位依据。 |
src/web/waiters/ControlsWaiter.mjs |
① 烘焙按钮文案汉化;② bakeClick() 原本用按钮文案判断该烘焙还是取消,汉化后两个分支都失配、点击失效,改用与语言无关的 dataset.bakeFunc 状态标识。 |
- 操作名称、参数取值、密码学标识符 —— 见上文「刻意保留英文的内容」。
- 真实字符集名、行尾代码、快捷键键位 —— 见上文「刻意保留英文的内容」; 其中字符集名与行尾代码同时是 URL 参数与 UI 测试断言的目标。
- 提示条 / 弹窗文案(
app.alert(...))—— 官方 UI 测试直接断言这些字符串 (如"Output character encoding has been detected and changed to UTF-8"), 改动会破坏测试契约。因此eolCodeToName(Line Feed、Carriage Return…) 也保持英文——它被InputWaiter/OutputWaiter的提示条复用; 状态栏里另外用一张局部的中文名表EOL_NAME_ZH显示中文。
前往 Releases 下载
CyberChef_v11.5.2_Chinese.zip,解压后直接用浏览器打开 index.html 即可离线使用,
无需任何安装。
校验和
文件大小 83,203,457 字节
SHA-256 f7e6cd922dc4b24fee2c27087ffb09306696331f4abc47279b4e1a8ee674434c
docker build --tag cyberchef-zh --ulimit nofile=10000 .
docker run -it -p 8080:8080 cyberchef-zh需要 Node.js(建议 22 LTS 及以上)。
npm install --legacy-peer-deps
npm run build # 等价于 npx grunt prod产物位于 build/prod/:
index.html—— 可直接双击打开的单页应用CyberChef_v11.5.2.zip—— 完整离线包(Release 中重命名为CyberChef_v11.5.2_Chinese.zip)assets/、modules/、images/
本地开发调试:
npm start # npx grunt dev,默认 http://localhost:8080汉化仅改动文案,为确认未引入任何功能回归,执行了上游自带的完整测试套件:
| 测试套件 | 结果 |
|---|---|
操作测试 tests/operations |
2309 / 2309 通过 |
Node API 测试 tests/node |
279 / 279 通过 |
浏览器 UI 测试 tests/browser |
2060 / 2062 通过(见下方说明) |
Node 消费方测试 npm run testnodeconsumer |
通过(CJS / ESM 按参数名传参均正常) |
# 复现方式(--openssl-legacy-provider 用于兼容 OpenSSL 3 下的 MD4/MD5)
node --no-warnings --no-deprecation --openssl-legacy-provider tests/operations/index.mjs
# 浏览器 UI 测试(需先构建 prod,并让 http://localhost:8000 指向 build/prod)
python -m http.server 8000 --directory build/prod
node node_modules/nightwatch/bin/nightwatch --env prod说明 1:
Generate all hashes、LM Hash等用例依赖 MD4/MD5 等旧算法, 在 OpenSSL 3 环境下必须加--openssl-legacy-provider才能运行, 这是上游npm test脚本本身就带的参数,与本汉化无关。说明 2:UI 测试失败的 2 条(
01_io.js:323与01_io.js:371)依赖操作系统的 剪贴板键盘复制(Ctrl+Ins/Shift+Ins),在非系统前台窗口的自动化环境下 剪贴板内容拿不到,属环境性问题,与汉化无关。
- 原始项目:gchq/CyberChef,作者 GCHQ 及众多贡献者。
- 本项目遵循上游的 Apache License 2.0,详见 LICENSE。 原项目版权归原作者所有,本仓库仅提供简体中文文案的本地化改动。
- 若本汉化对您有帮助,欢迎 Star;发现翻译问题请提交 Issue。