找到一个正向容易,逆向很难的公式
$$ m^{x} \equiv y\pmod n$$
设$m$,$n$都是已知的正整数,在知道$x$的情况下计算$y$容易,而只有$y$推算$x$很难
这里得介绍一个公式
phi function 记作 φ
φ(n) $ 求 1~n 中与 n互素的数的个数
如 φ(8) 在1,2,3,4,5,6,7中,1,3,5,7与8互素,所以 φ(8)= 4
考虑 n为质数,则 φ(n) = n -1
因为
$$ \phi(A*B) = \phi(A) * \phi(B) $$
若 N = P1 * P2 (质因数分解)
所以 $$ \phi(N) = (P1-1) * (P2-1) $$
因为m与n互素, 有以下公式
$$ m^{\phi(n)} \equiv 1 \pmod n $$
结合起来可以得到
$$ m^{k*φ(n)+1} \equiv m \pmod n $$
私钥可以写成
$$ e*d = k*φ(n)+1 $$
$$ d = \frac {k*φ(n)+1} {e} $$
举例
m = 89
p1 = 53
p2 = 59
n= 53*59 = 3127
φ(n) = 52*58 = 3016
e = 3 (必须为奇数,且不与φ(n)具体公因数)
私钥
$$ d = \frac {k*\phi(n)+1} e = \frac {2*3016+1} 3 = 2011 $$
只公开n和e
n = 3127
e = 3
加密过程
m的e次方 mod n 生成密文 c
$$ c = 89^3 mod 3127 = 1394 $$
解密过程
$$ c ^d \mod n = 1394^{2011} \mod 3127 = 89 $$
破解
因为只暴露 c, n ,要得到d的话,就得解出 k*φ(n)+1,也就是φ(n),这个就回到最前面的公式,很难。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。