CIPHER·DESK
明文 → 密文 → 明文

把秘密锁起来
的几种方式

加密的全部任务,是让一段信息只有持有正确「钥匙」的人才能读懂。 下面这台机器正在实时运转——改动文字或拨动转盘,看明文如何被搅乱成密文。

caesar_cipher.live — 凯撒移位机
明文
密文
3
每个字母向后挪 3 位 · A→D · B→E …
先分清楚 · The Three Paradigms

加密,大致只有三种思路

几乎所有你听过的算法都能归进这三类。先建立这张地图,后面每个算法都能立刻对号入座。

01 / 可逆 · 同一把钥匙

Symmetric

对称加密

加密和解密用同一把密钥。速度快,适合加密大量数据。难点在于:怎么安全地把这把钥匙交给对方?

代表:AES · ChaCha20 · DES
钥匙:1 把,双方共享
用途:磁盘 / 通信内容加密
02 / 可逆 · 一对钥匙

Asymmetric

非对称 / 公钥加密

每人有公钥 + 私钥一对。公钥随便发,谁都能用它加密;只有对应私钥能解开。慢,但解决了「钥匙怎么送」的难题。

代表:RSA · ECC · Diffie-Hellman
钥匙:1 对,公开 + 私藏
用途:密钥交换 / 数字签名
03 / 不可逆 · 没有钥匙

Hash

哈希 / 摘要函数

把任意数据压成固定长度的指纹无法逆推回原文——它不是加密,而是用来验证完整性和存口令。

代表:SHA-256 · SHA-3 · MD5
钥匙:无
用途:校验 / 密码存储 / 签名

易混点:哈希不是加密,因为它不可逆、也没打算让你解回去;Base64 更不是加密,那只是一种编码,任何人都能直接还原。本页把哈希一并讲,是因为它在密码学里几乎无处不在。

古典 · 替换密码

Caesar & Vigenère

从最古老的密码开始,因为它们的「机制看得见」。凯撒密码把每个字母在字母表里向后挪固定的几位——位移量就是密钥。它的死穴是:只有 25 种可能,挨个试一遍就破了(暴力破解),而且不改变字母频率,英文里最常见的 e 加密后仍然最常见,统计一下就露馅。

caesar · 单字母移位
破解演示:25 种位移全部列出,肉眼就能挑出哪句是人话。

维吉尼亚密码是凯撒的升级:不再用一个固定位移,而是用一个密钥词循环套在明文上,每个字母按密钥对应字母的位置移动。这样同一个明文字母在不同位置会变成不同密文,频率分析失效了好几百年——直到有人发现密钥长度可以被推断出来。

vigenère · 多表替换

这两种都是教学玩具,今天没有任何场景该用它们保护真实数据。它们的价值在于让你直观理解「位移」「密钥」「频率分析」这些概念。

对称 · 现代主力

AES

高级加密标准(Advanced Encryption Standard)是今天对称加密的事实标准,HTTPS、磁盘加密、微信消息几乎都在用它。它把数据切成 128 位的块,在一个 4×4 字节矩阵上反复做字节替换、行移位、列混淆、轮密钥加四步,重复 10/12/14 轮(对应 128/192/256 位密钥)。每一轮都让数据更彻底地「扩散和混淆」,最终任何人没有密钥都无从下手。

下面这台是真加密——调用浏览器原生的 Web Crypto,用 AES-GCM 模式。你的口令会经 PBKDF2 派生成 256 位密钥,每次加密还会生成随机 IV,所以同样的明文每次密文都不同(这是好事)。

aes-gcm · 浏览器原生真实加密
试试:用错误口令解密,或把密文改一个字符——GCM 会检测到篡改并直接拒绝,这就是「认证加密」。
非对称 · 公钥

RSA

RSA 的安全建立在一个朴素事实上:两个大素数相乘很容易,但把乘积分解回去极难。它造出一对钥匙——公钥 (n, e) 公开给所有人加密,私钥 (n, d) 自己留着解密。下面用很小的素数把整个数学骨架拆给你看(真实 RSA 的 n 有 600 多位数字,这里只是为了看清原理)。

rsa · 小素数原理演示
公钥可以贴在任何地方,谁都能用它加密发给你;可没有私钥 d,密文就是一堆死数字。d 的安全,靠的就是「分解 n 太难」。

⚠ 为什么不能自己写加密算法

上面的演示省略了填充(padding)、随机化、防侧信道等一切真实工程要素。自实现的密码学几乎必然存在可被利用的漏洞。原则:理解原理,但永远调用经过审计的成熟库(如 libsodium、浏览器 Web Crypto、OpenSSL)。

不可逆 · 摘要

SHA-256

哈希函数把任意长度的输入压成一个固定长度的指纹(SHA-256 永远输出 256 位 / 64 个十六进制字符)。它有几个关键性质:同样输入永远得同样输出无法从指纹反推原文极难找到两个不同输入产生相同指纹。下面也是真实计算(Web Crypto)。

最迷人的性质是雪崩效应:输入哪怕只改一个字,输出会有大约一半的二进制位翻转,且毫无规律。改下面任一框里的文字,看看两个指纹的差异有多剧烈。

sha-256 · 雪崩效应对照
二进制位差异

应用:网站不该存你的明文密码,而是存密码的哈希(还要加盐 + 慢哈希如 bcrypt/Argon2)。下载文件后比对 SHA-256,能确认它没被篡改或损坏。

非对称 · 密钥交换

Diffie–Hellman

对称加密又快又好,但「怎么把那把共享钥匙安全送给对方」是个死结——网络上全是窃听者。DH 密钥交换巧妙地解决了它:双方在公开信道上喊话,却能各自算出一个只有他俩知道的共享密钥,窃听者全程听着也算不出来。

经典的颜色比喻:双方公开一种共享底色,各自偷偷加一种私密色混合后交换,再把对方的混合色和自己的私密色再混一次——两人最终得到同一种颜色,而旁观者拿到两份混合色也调不出它,因为「把颜色分离回去」做不到。

diffie-hellman · 颜色比喻 + 真实数学

ALICE

公开底色
+ 私密色 a
= 公开发出 A

BOB

公开底色
+ 私密色 b
= 公开发出 B
两人算出同一把共享密钥

真实 DH 用大素数下的模幂运算(离散对数难题)替代「混颜色」。算出共享密钥后,双方再用它做 AES 这种快速对称加密——这正是 HTTPS 握手每天在做的事。

速查 · Cheat Sheet

一张表收尾

算法类别钥匙可逆典型用途
Caesar / Vigenère对称(古典)位移 / 密钥词仅教学
AES对称1 把共享数据 / 通信内容
ChaCha20对称1 把共享移动端 / 流加密
RSA非对称公钥 + 私钥密钥传输 / 签名
ECC (椭圆曲线)非对称公钥 + 私钥同 RSA,更短更快
Diffie-Hellman非对称公钥 + 私钥协商共享密钥
SHA-256 / SHA-3哈希校验 / 签名摘要
bcrypt / Argon2哈希(慢)无(加盐)密码存储
MD5哈希(已破)仅校验,勿用于安全

⚠ 三条铁律

① 别自己造加密算法,调用成熟库。② 哈希存密码必须加盐 + 用慢哈希。③ 现实里几乎都是组合拳:非对称协商密钥 → 对称加密内容 → 哈希做完整性校验,HTTPS 就是这个套路。