n是两个素数p与q的乘积
φ(x) 是指小于x与x互素的正整数个数,如φ(10) = 4整数是{1,3,7,9}
根据欧拉函数 n = pq有
φ(n) = φ(pq) = φ§*φ(q) = (p-1)(q-1)
现在e为满足 gcd(φ(n),e) = 1的数 1<e<φ(n)
现在指定一个e,已知n的条件,要求d = e^-1 mod n 也就是求 e的逆元
直接举个例题,e=3533,n=11200 求 d = e^-1 mod n?
首先第一步,使用辗转相除法,目标是把k1~kn求出来
11200 = 3 * 3533 + 601 (a= k*1b+r1)
3533 = 5 * 601 + 528 (b = k2r2 +r2)
601 = 1 * 528 + 73
528 = 7 * 73 +17
73 = 4 * 17 + 5
17 = 3 * 5 +2 前面的3对应x行的第二格
5 = 2 * 2 + 1 前面的2对应x行的第一格
2 = 1 * 2(由于已经没有余数了,算到这一步就应该停了)
第二部,构建两行式子,为了方便称呼就叫x行和y行了
第一行式子x行是不包括没有余数的式子的,从下往上的系数kn~k1
行号\号数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|---|
x行 | 2 | 3 | 4 | 7 | 1 | 5 | 3 | 系数 | |
y行 |
第二行式子y行是第0格默认是1,第1格与上面的那一格相同,后面的yn = yn-1 * xn +yn-2,
就是上面的那个格子 * 乘左边的格子 +左边的左边的格子,由y2往后面写.
行号\号数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|---|---|
x行 | 2 | 3 | 4 | 7 | 1 | 5 | 3 | 系数 | ||
y行 | 1 | 2 | 7 | 30 | 217 | 247 | 1452 | 4603 | yn = yn-1 *xn +yn-2 |
最后我们得到了最后一个格子4603。
而e的逆元d
1.假如x行有偶数个,逆元等于y行最后一个数d = ylast = 4603
2.假如x行有奇数个,逆元等于n - y行最后一个数 = n - ylast = 11200-4603 = 6597
这题的x的个数是奇数个为7,所以答案是6597
这题答案就是6597了。
再来一题,求模26时11的逆元(求d = 11^(-1) mod 26)
第一步,辗转相除法求系数k
26 = 2 * 11 + 4
11 = 2 * 4 + 3
4 = 1 * 3 +1
3 = 3 * 1(余数是0,结束)
构建表格
行号\号数 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
x行 | 1 | 2 | 2 | |
y行 | 1 | 1 | 3 | 7 |
平时考试就不用那么麻烦了直接这样写就好了
1 | 2 | 2 | |
---|---|---|---|
1 | 1 | 3 | 7 |
数一下个x行个数,奇数,所以答案应该是n - 7 = 26 - 7 = 19