实验二非对称密码算法RSA
一、实验目的
通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。
二、实验环境
运行Windows或Linux操作系统的PC机,具有JDK1.6版本的Java语言编译环境。
三、实验内容和步骤
1. 对RSA算法的理解
RSA算法(公开密钥算法)的原理:
(1). 选择两个大的素数p和q(典型情况下为1024位)
(2). 计算n = p * q 和 z =(p-1)*(q-1).
(3). 选择一个与z互素的数,将它称为d
(4). 找到e,使其满足e*d = 1 mod z
提前计算出这些参数以后,我们就可以开始执行加密了。首先将明文分成块,使得每个明文消息P落在间隔0*P<n中。为了做到这一点,只要将明文划分成k位的块即可,这里k是满足2^k<n的最大整数。
为了加密一个消息P,只要计算C=P^e(mod n) 即可。为了解密C,只要计算P=C^d(mod n)即可。可以证明,对于指定范围内的所有P,加密盒解密互为反函数。为了执行加密,你需要e和n;为了执行解密,你需要d和n。因此,公钥是有(e,n)对组成,而私钥是有(d,n)对组成。
实例:根据已知参数:p=3,q=11,M=2,计算公私钥,并对明文进行加密,然后对密文进行解密。
由题意知:n = p * q=33,z =(p-1)*(q-1)=20,选d=7,
计算得e=3,所以
C=M^e(mod n)=8
M=C^d(mod n)=2
2、RSA算法与DES算法的比较:
运行附件的RSATool,输入一大段文字,记录运行时间。再使用DES算法加密相同的文字,记录运行时间,对比这两个时间发现,RSA算法比DES算法慢很多,因为RSA算法进行的是大数运算,所以程序运行的速度比DES慢很多。因此RSA算法只适合于少量数据加密,不适合于大量数据加密。
…… …… 余下全文