RSA 低指数广播攻击攻击背景当同一份明文消息 m 使用 相同的低加密指数 e(例如 e = 3 或 e = 5)
但不同的模数 N1, N2, ... , Nk 分别加密并发送给 k 个接收者时,攻击者如果能截获至少 e 个密文,就可以在不分解任何模数的情况下恢复出明文
该攻击属于 Hastad 广播攻击的一个特例(无随机填充时)
数学原理以 e = 3 为例
加密过程
123c1 = m^3 mod N1c2 = m^3 mod N2c3 = m^3 mod N3
因为 N1, N2, N3 两两互质,我们可以使用中国剩余定理(CRT) 求解同余方程组
123x ≡ c1 (mod N1
2026-05-111.7k 字9 分钟
RSA 基础
RSA 基础欧拉函数 φ(n)φ(n) 表示 “小于等于 n 且与 n 互质的正整数的个数”
如果 n 是质数 p,那么 φ(p) = p - 1(因为 1,2,…,p-1 都和 p 互质)
如果 n = p * q,且 p、q 都是质数,那么 φ(n) = (p - 1) * (q - 1)
例如 p = 5, q = 11,则 n = 55,φ(55) = 4 * 10 = 40
密钥生成选两个大质数 p 和 q实际中 p、q 有 1024 位或 2048 位,这里我们用小数字演示
12p = 61q = 53
2026-05-11612 字4 分钟
RSA 共素数攻击
RSA 共素数攻击原理RSA 的公钥模数 N = p * q,其安全性建立在分解大数 N 的困难性上。如果两个不同的设备、用户或应用生成了各自的模数 N_1 和 N_2,但碰巧使用了同一个素数作为因子
N_1 = p × q_1
N_1 = p × q_1
那么,攻击者只要计算一次最大公约数就能立即得到公共因子 p,进而求出 q_1 和 q_2,两个模数同时被攻破
实战案例rsa(共素数攻击)
题目源码
123456789101112131415161718from Crypto.Util.number import getPrime,bytes_to_longflag=open(&q
2026-05-11267 字2 分钟
Vigenère 密码
Vigenère 密码基本思想Vigenère 密码是一种多表代换密码,它用一个关键词给明文中的每一个字母施加不同的凯撒移位
加密步骤步骤一:对齐密钥将密钥不断重复,直到长度覆盖整个明文
12345明文:ATTACKATDAWN密钥:LEMON明文: A T T A C K A T D A W N密钥: L E M O N L E M O N L E
步骤二:字母 → 数字将 A–Z 映射为 0–25:
1A=0, B=1, C=2, ..., Z=25
步骤三:逐位加密对于明文的第 i 个字母 P_i,对应密钥的第 i 个字母 K_i
用公式表示的话如下,其实就是位移,例如明文 h
仿射加密仿射加密就像把字母表上的每个字母,通过 “乘以一个数” 再加 “一个常数” 映射成另一个字母
这样加密后的字母和原字母呈线性关系,所以叫 “仿射”
加密原理把英文字母 a~z 对应成数字 0~25
设:
x = 明文字母对应的数字
y = 密文字母对应的数字
仿射加密的数学形式就是:
1y = (a * x + b) mod 26
其中 a 和 b 是密钥,必须满足:
a 与 26 互质(gcd(a,26)=1),否则不同明文字母可能加密成同一密文
b 是 0~25 之间的整数
解密原理解密就是要从 y 求出 x
1a*x = y - b (mod