为什么是纯文本

密码学的笔记有个特点:公式和代码片段特别多。用 Markdown 纯文本存,既能被 grep、ripgrep 这类工具直接检索,又方便和 git 配合做版本管理。相比 Notion、语雀这类重工具,纯文本几乎零迁移成本。

目录结构

我的笔记按「领域 → 主题 → 条目」三层组织:

text
crypto-notes/
├── symmetric/        # 对称密码
│   ├── aes.md
│   └── block-mode.md
├── asymmetric/       # 非对称密码
│   ├── rsa.md
│   └── ecdsa.md
├── hash/             # 哈希与 MAC
│   └── hmac.md
└── attacks/          # 攻击手法
    └── padding-oracle.md

统一笔记模板

每篇笔记固定一个结构,检索时才不会乱:

  1. 标签:一行 YAML front-matter,标注领域和难度。
  2. 一句话结论:先给结论,方便扫读。
  3. 公式 / 代码:核心内容。
  4. 踩坑:做 CTF 时实际遇到的问题。

检索方案

用 ripgrep 配合自定义 alias,可以实现秒级全文检索。比如想找所有和 padding oracle 相关的内容:

bash
# 在笔记目录里全文检索,高亮命中
rg -i "padding oracle" crypto-notes/ --line-number

# 配合 fzf 做交互式检索
rg --files crypto-notes/ | fzf | xargs less

「笔记的价值不在写得多少,而在要用的那一刻能不能三秒内找到。」

小结

这套体系的关键在于 纯文本 + 可检索 + 可版本化 三件事。工具越简单,越不容易因为「维护工具」本身而放弃记笔记。完整模板我放在 GitHub 上了,需要可自取。