1. 题目在非对称加密算法RSA中,假设“大”素数p=5,q=11,试给出计算过程。
知识点:
- RAS计算方法
- 辗转相除法计算私钥d
- 快速指数计算方法
2. 分析步骤
-
先计算n=p*q,φ(n)=(p-1)(q-1)
n=5*11=55,φ(n)=4*10=40
-
选取一整数e,满足1<e<φ(n),且e与φ(n)互质。
不妨选取e=17
,其满足1<e<φ(n),且e与φ(n)互质的条件 -
计算d,d满足
e*d ==1 mod φ(n)
这里的e*d ==1 mod φ(n)
等价如下:
e*d -n*k =1
带入得 17d-40k=1
后面利用辗转相除法计算d,简单理解是大数当被除数求余就行了
①将40对17取模得到的余数6代替40,则变为17d-6k=1;
②将17对6取模得到的余数5代替17,则变为5d-6k=1;
③将6对5取模得到的余数1代替6,则变为5d-1k=1;
(注意点:如果k的系数先为1,则令d=1再回代。若d的系数先为1,则令k=0再回代)
当前k系数先为1令d=1,回代到③式中。
令d=1,回代到③式,5-1k=1,显然 k=4
令k=4,回代到②式,5d-24=1,显然 d=5
令d=5,回代到①式,17*5-6k=1,显然 k=14
令k=14,代入到17d-40k=1,得d=33
,这个值即我们要求的私钥d的最终值。 -
可得公钥{e,n}={17,55},私钥{d,n}={33,55}
-
其实到上一步就算完了,我们可以验证试试
- 加密时密文 c=memod n,m是明文。我们可以设个简单的明文 m=2,显然 217mod 55 =7
- 解密时 明文 m=cemod n。这里是 m=733mod 55 =2。我们可以采用快速指数运算来计算,实际上就是幂为奇数提一个出来,之后的偶数幂拆开计算。
快速指数法是运用公式: (a×b)mod n = [(a mod n)×(b mod n)]mod n
例子:
15^27(mod 33)
15^27(mod 33) = 15 * 15^26(mod 33) = 15 * (152)13 (mod 33) = 15 * 27 ^13 (mod 33) = (15 * 27) * 27 ^12 (mod 33) = 9 * 27^12 (mod 33) = 9 * (272)6 (mod 33) = 9 * 3 ^6 ( mod 33) = 9* (32)3 (mod 33) = 9 * 9^3 (mod 33) = (9*9)*9^2(mod 33)=15 * 15 (mod 33) = 27 (mod 33) = 27
3. 抄作业简单粗暴看这里
n=pq=55, φ(n)=(p-1)(q-1)=40
令e=17,e满足与40互质的条件
∵e*d ==1 mod φ(n)
∴17d-40k=1,由辗转相除法可算出
d=33,满足 e*d=561=55*14+1
可得公钥{e,n}={17,55},私钥{d,n}={33,55}