引言
hello!欢迎来到咪喵魔法世界~
抱着对crypto的强烈好奇与浓烈兴趣,我加入了这个神秘的魔法组织。有句话是这么说的,“当新鲜感褪去,真正的爱才开始浮现”。学习crypto的第四个月,我对这句话的赞同度只增不减。
不得不承认,crypto的学习也许不像第一眼看上去那样“炫酷”,它没有web“改个请求参数就能弹出 flag”的即时快乐;也没有二进制“调通断点让程序跑通”的爽感,学crypto的枯燥是越往深处走越磨人的“顿感枯燥”——不是基础RSA算逆元的机械,是分析复现 Coppersmith 算法攻击时对着 “短私钥多项式构造” 的论文啃一下午,连变量替换的逻辑都没摸透的头昏脑涨;是调 ECC 离散对数题时,对着椭圆曲线的加法法则算到脑仁疼,结果因为曲线参数是弱类型,之前的推演全成了无用功的哭笑不得;是面对无数 Latiice 文献的无从下手,或是左脑子进右脑子出的🤷♀️,以至于学到凌晨三更时总有摆烂的念头莫名生出。
然而幸运的是因为学习crypto,我结识了一群志同道合的朋友,认识了愿意带着我们做项目的老师,而我也感谢小小的老己从没想过放弃。
兴趣是指导一个人入门最好的老师,却并不足以支撑他长久的走下去。对我来说,支撑我啃这些枯燥文论的也从来不是 “有趣”,是那种 “慢半拍但沉甸甸” 的成就感;是想拥有一门 “别人替代不了” 的硬技能;是知道学会这些后能有更多的职业选择;甚至是在未来能够设计出一个自己的高安全性的加密程序 —— 这些朴素又真实的动力,比什么 “浪漫的坚持” 都更能让人沉下心,慢慢往前走。
如果你真正沉下心来学习crypto,你就会发现它其实是一门“入门易、精通难”的课程,核心是先把基础框架搭起来,再通过真题慢慢打磨。这篇文章是我整理的 CTF Crypto 前置学习笔记,目标是把「环境搭起来 + 基础语法能上手 + 工具链能跑通」做成一份可复用的操作清单。对于新手小白来说,照着做完,就能在本地拥有一个适合 CTF/Crypto 学习与实验的干净环境啦。
最后再次欢迎大家加入咪猫魔法部~或者一起来见证一只咪猫小cainiao的成长哈哈😄
一、 环境配置目标(以Windows系统为例)
在 crypto 的世界里,很多“题目做不出来”并不是你不聪明,而是—— 环境没搭好、工具没装对、命令不会用、脚本跑不起来。
所以这篇文章我们不讲玄学,只讲把工坊搭好。不过由于都是最基础的环境配置问题,技术上没什么难点,主要就是跑时间和🖥️,所以我就不一一详细的讲解了,只给出必要的环境配置方向与步骤。(相关下载网址我放在文章最下端了,有需要的可以自取。)
✅ 你最终会拥有:
- Windows 电脑(主系统)
- 一个“藏在 Windows 里的 Linux”:WSL2(Ubuntu)
- 一个不会乱套的 Python 环境:Conda(crypto 专用环境)
- 一个适合数论/密码学的“超级计算器”:SageMath
- 一个边算边记边写报告的“魔法笔记本”:Jupyter Notebook
- 一个能编译 C 代码的工具链:gcc(在 WSL2 里)
并且会跑通 2 个最小示例:
- Python 版凯撒密码 ✅
- C 版凯撒密码 ✅
如果上述目标你都已经达成了,就可以直接跳过这篇文章进入下一关:RSA / ECC / lattice / 等真题的复现啦。
二、 Linux 系统基础学习(WSL2+Ubuntu)
这里我比较推荐把 Windows + WSL2 作为 crypto 学习主力环境,原因如下:
- 双系统:切换要重启,文件来回拷贝麻烦;
- 虚拟机:占内存,跑起来卡,配网又麻烦;
- WSL2:直接在 Windows 里开 Linux,不用重启,文件还能互通。
下面是具体的安装步骤:
2.1:安装 Python
这一步就是让你的电脑能运行
python xxx.py
安装时一定要勾选这个:✅ Add Python to PATH
不然你打开终端会遇到:
python不是内部或外部命令
然后打开 PowerShell / CMD:验证是否安装成功
|
|
能看到版本号(比如 Python 3.11.x)就 OK。
2.2:安装 WSL2 + Ubuntu(your Linux 工坊)
2.2.1: 先安装管理员 PowerShell
|
|
装好后需要重启一下电脑。
2.2.2: 启动 Ubuntu
启动方式之一:
|
|
进入后你会看到类似:
|
|
这就说明你已经进入 Linux 了!
2.3:Linux 里先学会“活下去”的命令
新手最常见崩溃:“我不知道我在哪、我不知道文件在哪、我不知道怎么创建文件夹。”
其实你只需要先掌握这 8 个常用命令就足够了:
|
|
小建议:初期别硬刚 vim,先用 nano 把路走通,后面再学 vim 会更舒服,~o( =∩ω∩= )m。
三、Miniconda 与 SageMath 基础学习
为什么要安装 conda 呢?通俗来讲是因为 crypto 的库很容易“互相打架”。比如你今天装了 A 的依赖,明天装了 B 的依赖,结果:
- A 跑不动了
- B 也跑不动了
- 你开始怀疑人生
Conda 的作用就是:给每个项目一个独立环境,互不干扰。具体的安装步骤我放下面啦:
3.1:安装 Miniforge 并创建 crypto 专用环境⭐
在 WSL2 Ubuntu 里运行:
|
|
一路同意(y)即可。安装完成后关掉终端再打开即可让 conda 生效。
验证:
|
|
接着继续创建 crypto 专用环境:
|
|
看到命令行前面出现 (crypto),说明进入成功。如果以后你要装库、跑题、装 Sage,都建议先执行:
|
|
3.2:安装 SageMath(Crypto 的“数论神器”)⭐⭐
在 CTF 里面很多 RSA / ECC / lattice 的题目,本质上就是比较复杂的数学运算。而 SageMath 就像是 crypto 领域的“魔法计算器”。我们把它安装在刚刚配置好的 (crypto) 环境内:
|
|
可以用简单的数学式子进行验证:
|
|
如果能算出 1024 并正常退出,就 OK。
3.3:安装 Jupyter(边算边记、写报告神器)
Jupyter 的意义在于,你能在一页里同时拥有:
- 文字笔记
- 代码
- 输出结果
- 公式推导
启动:
|
|
如果浏览器没自动打开,复制终端给的 URL 到浏览器打开即可。
3.4:安装 C 编译环境
crypto 题里,C 很常见:你会遇到各种本地程序、加密实现、编译链问题,所以这一步也很重要。
在 WSL2 Ubuntu 安装 gcc:
|
|
验证:
|
|
有版本号就说明 OK。
四、小练习:编写简单程序跑通凯撒密码(Python 版 + C 版)
这一步不是为了凯撒本身,而是为了:✅ 你能写代码 → 能运行 → 能输出 → 能调试。关于具体的古典密码(包括更多的密码学基础知识)的内容我会在后续的文章里写道,持续更新噢~o( =∩ω∩= )m。
4.1:Python 版(可加解密)
新建 caesar.py:
|
|
运行:
|
|
看到明文→密文→解密回明文,就成功啦。
4.2:C 版
新建 caesar.c:
|
|
编译运行:
|
|
同样看到明文→密文→回明文,就说明 C 工具链 OK。
五、cainiao 必备“救命命令”急救包
| 你想做什么 | 命令 |
|---|---|
| 我在哪 | pwd |
| 看目录 | ls -la |
| 进目录 | cd xxx |
| 退回上一层 | cd .. |
| 创建目录 | mkdir xxx |
| 创建文件 | touch a.py |
| 编辑文件 | nano a.py |
| 激活环境 | conda activate crypto |
| 退出环境 | conda deactivate |
| 启动 Sage | sage(退出 exit()) |
| 启动 Jupyter | jupyter notebook |
六、小结:工坊搭好了,下一步就开始“真魔法”啦🐱
到这里你已经完成了最关键的事:
- 环境稳定 ✅
- 工具链跑通 ✅
- 代码能执行 ✅
- 学习可以持续推进 ✅
接下来就可以开始刷 RSA / ECC / lattice 的真题,并把笔记像“魔法书”一样慢慢积累起来。
欢迎继续留在咪喵魔法部~ 我们一起把“顿感枯燥”的 crypto,啃成“慢半拍但沉甸甸”的成就感吧(>^ω^<)🐾
附:常用资料入口(复制用)
|
|
