难度分布过于均匀,前半小时意气风发,后面六小时坐牢(还把脑子烧坏了.sage
Crypto上尚待学习探索的区域还有很多呐...
rsand
1 | from Crypto.Util.number import getPrime, bytes_to_long |
crypto1()
函数产生了hint1和hint2。
注意到 \(x_1\) 、\(x_2\) 的值均不大,且若已知之,存在 \(gcd(x_2hint_1-x_1hint_2,n) == q\)
故可以爆破 \(x_1\)、\(x_2\) 的值来分解n,代码如下
1 | from itertools import product |
crypto2
函数中,\(hint \equiv
(514p - 114q)^{n-p-q} (mod n)\)
根据欧拉函数性质显然有 \((514p -
114q)^{n-p-q+1} \equiv 1 (mod n)\)
进而,\(hint^{-1} \equiv 514p-114q (mod
n)\) 又由于 \(514p-114q \in
(0,n)\) 显然成立,故 \(hint^{-1}\) 就是其值 将之与方程 \(n=pq\)联立即可分解 \(n\)
1 | from Crypto.Util.number import * |