问题4048--RSA算法实现

4048: RSA算法实现

[命题人 : ]
时间限制 : 1.000 sec  内存限制 : 64 MB

题目描述

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和Len Adleman在MIT开发的,取名来自三位作者的名字首字母。 RSA是目前最有影响力的公钥加密算法,在工业界有着广泛的应用。三位作者因为发明RSA算法而获得2002年计算机科学最高奖-图灵奖。 RSA算法基于一个十分简单的数论事实: 将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 1.实验目的 通过RSA加密算法的实现,掌握RSA算法的原理,为今后的工程应用打下坚实的基础。 2.实验原理 (1)找出三个数p,q,e.其中p,q是两个相异的素数,e是与(p-1)×(q-1)互素的数; (2)找到d,使得e×d=1 mod (p-1)×(q-1),用扩展欧几里德算法可以得到; (3)计算n=p×q; (4)其中: (e,n)这两个数是公钥,(p,q,d)这三个数是私钥。 加密过程:(1)若待加密的明文信息定义为m

输入

第一行输入p,q,e,r,其中p,q,e为系统参数,r表示测试数据组数; 以下共r行测试数据,每行两个数字; 1、第一个数字如是1则表示加密操作,随后数字是明文; 2、第一个数字如是2则表示解密操作,随后数字密文。

输出

每组测试数据计算后,输出计算结果

样例输入 Copy

32707 32173 13 4
1 1
1 2 
2 8192
2 1

样例输出 Copy

1
8192
2
1

提示

1、由公钥e生成私钥d采用扩展欧几里德算法; 2、加/解密采用快速模指数算法。 否则可能超时。