通俗理解
把公钥想成一只能投不能取的公开信箱:任何人都能把秘密放进去,只有持有私钥的收件人才能打开。RSA 的代价是计算较慢,因此工程中通常只让它保护一小段关键数据,例如 AES 会话密钥。
选择明文 M
→
公钥加密 (M^e mod n)
→
密文 C
→
私钥解密 (C^d mod n)
→
还原明文 M
第一步:设置初始密码参数(要求:p、q 为两个不相等的质数,且都是 2~3 位数字,即 10~999 之间)
请输入合法的参数或点击自动生成。
密钥对计算与推导流程
1
计算公共模数 N
将两个选定的独立素数进行相乘,它是公钥和私钥构成的公共基础。
N = p × q = 待计算
2
计算欧拉函数 φ(N)
φ(N) 表示小于或等于N的正整数中与N互质的数的数目。
φ(N) = (p - 1) × (q - 1) = 待计算
3
确定公钥指数 e
选定的 e 必须满足 1 < e < φ(N) 且 e 与 φ(N) 互质。
公钥对 (e, N) = 待计算
4
计算私钥指数 d
d 是 e 关于 φ(N) 的模逆元,满足乘积除以 φ(N) 余 1。
私钥对 (d, N) = 待计算
第二步:执行数据加解密与数字签名演练
5
公钥加密原理 (Encryption)
发送方使用公开的公钥对明文进行指数幂运算并取模,生成密文。
C = M^e mod N = 待计算
6
私钥解密原理 (Decryption)
接收方使用仅自己持有的私钥对密文进行逆运算,能且仅能由私钥还原明文。
M = C^d mod N = 待计算
7
私钥签名原理 (Sign)
发送方用私钥对数字进行加密。此操作证实了消息确实由特定私钥持有者发送。
S = M^d mod N = 待计算
8
公钥验证签名 (Verify)
任何人都可以用公钥解密签名,如果得到的结果与原数字一致,则证明签名真实有效。
V = S^e mod N = 待计算
通俗理解
把 AES 想象成一台带很多道关卡的"搅拌机":发送方和接收方手里拿着完全相同的一把钥匙。加密时,数据会被切成一个个 16 字节的小方块,每个方块都要反复经过下面这 4 个步骤的"搅拌"(通常一共 10~14 轮),把原本整整齐齐的数据彻底打乱成看起来毫无规律的密文。解密时只需用同一把钥匙把这 4 个步骤倒着做一遍,就能把数据还原回来。因为只用一把钥匙、运算又简单,AES 的速度比 RSA 快得多,所以现实中常用它来加密大段文件或消息正文,再用 RSA 来保护这把钥匙本身(详见"混合加密体系")。
输入明文数据
→
字节代换 (SubBytes)
→
行移位 (ShiftRows)
→
列混淆 (MixColumns)
→
轮密钥加 (AddRoundKey)
→
输出密文
AES 分组变换动态模拟演练
提示:真实的 AES-128 会把下面 4 个步骤反复执行 10 轮,每轮换用不同的轮密钥;这里只演示第一轮的完整过程,帮助你看清每一步具体在做什么。
查看完整 Rijndael S‑Box (十六进制)
查表方法:把字节写成两位十六进制数,第一位数字对应"行号",第二位数字对应"列号",在表格里找到交叉位置的值就是替换结果。
例如字节 0x6B → 第 6 行、第 B 列 → 查到 0x7F,于是 0x6B 就被替换成了 0x7F。
1
字节代换 (SubBytes)
把矩阵里的每一个字节,按照一张固定的"替换表"(S‑Box,相当于一本查询字典)换成另一个字节。每个字节的替换互不影响、只是简单地"查表换字",但换完后数据看起来已经和原来完全不一样了。
状态输出: 矩阵数据已通过 S 盒转换
2
行移位 (ShiftRows)
把 4×4 的字节矩阵想象成 4 排座位:第 1 排不动,第 2 排所有人向左挪 1 位,第 3 排挪 2 位,第 4 排挪 3 位(挪出边界的从另一头接上)。这样原本同一列的字节被拆散到了不同列,打乱了数据的横向规律。
状态输出: 行循环移位处理完成
3
列混淆 (MixColumns)
用一种固定的数学方式(伽罗瓦域乘法),把同一列里的 4 个字节"搅拌"在一起,让这一列里任何一个字节的变化都会扩散到整列的输出上。这一步保证了哪怕只改动 1 个字节,最终结果也会面目全非(也就是常说的"雪崩效应")。
状态输出: 列向量线性组合混合完成
4
轮密钥加 (AddRoundKey)
把当前的数据矩阵和这一轮专属的"轮密钥"逐字节做异或(XOR)运算,相当于给数据盖上一个只有持有正确密钥才能对应解开的印章。不知道密钥的人,即使看懂了前面三步在做什么,也无法逆推出原始数据。
最终分组密文结果: 模拟计算完成
一句话理解
AES 是装运大量数据的保险箱,RSA 是只用来运送保险箱钥匙的防拆信封。接收方先用私钥拆信封取出 AES 密钥,再打开保险箱还原正文。
AES 会话密钥每次发送时随机生成,只服务于当前消息。
RSA 密钥对公钥封装会话密钥,私钥负责在接收端解封。
传输载荷组合加密后的 AES 密钥、IV、正文密文和认证标签。
A数据通道
原始消息
↓
AES-GCM 快速加密
↓
正文密文 + 认证标签
B密钥通道
随机 AES 会话密钥
↓
RSA-OAEP 公钥加密
↓
加密后的会话密钥
↓ 两条通道合并传输
加密密钥 + IV + 正文密文 + 认证标签
动手演练:观察一条消息如何被打包和还原
输入任意长度的消息。演练会生成一次性 AES 密钥,并依次展示正文加密、密钥封装、载荷打包和接收方解密。
1
一键随机生成对称会话密钥
系统为当前会话随机生成一个短小快速的高强度一次性 AES 密钥。
临时 AES 密钥: 自动生成中
2
对称加密长密信主体
使用刚刚生成的临时 AES 对称密钥对海量文本数据进行工业级高速对称加密。
加密结果数据流密文: 计算中
3
使用非对称 RSA 公钥加密 AES 密钥
因为 AES 密钥体量极小,故可以使用接收端的公钥进行安全的非对称加密封装。
被信封包裹的已加密密钥: 计算中
4
组合为可传输的完整载荷
将加密后的 AES 密钥、IV、正文密文和认证标签按固定顺序打包,接收方才能准确拆分各部分。
完整传输载荷: 打包中