实验3:RSA加密算法实现
一、实验目的
1、理解RSA加密算法; 2、设计RSA加密算法程序。 二、实验内容
编程实现RSA加/解密算法。 三、实验原理及步骤
1.RSA加/解密算法 (1)密钥的产生
①选两个保密的大素数p和q;
②计算npq,np1q1,其中n是n的欧拉函数值; ③选一个整数e,满足1e(n),且((n),e)1;
④计算d,满足de1mod(n),即d是e在模(n)下的乘法逆元,因e与(n)互素,由模运算可知,它的乘法逆元一定存在; ⑤以e,n为公开钥,d,n为秘密钥。 (2)加密
加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n。然后对每个明文分组m,作加密运算:
cmemodn
(3)解密
对密文分组的解密运算为: mcmodn 2、素性检验算法:
对于奇整数n,且n12st,a,n互素,如果atmodn1或r,1rs1使a2tmodn1,则n是以a为基的强拟素数。如n是奇合数,则n对于基a(1an1)是强拟素数的可能性1至多是。
4rd
3、快速指数算法:
求a可如下进行,其中a,m是正整数: 将m表示为二进制形式bkbk1b0,即
m
mbk2kbk12k1b12b0
因此
am((((ak)2ak1)2a1)2a0 四、测试用例
例 选p=7,q=17。求npq119,j(n)=(p-1)(q-1)=96。取e=5,满足11.用RSA如何实现数字签名?2.本算法中明文为数字,如何用RSA实现对字符串的加、解密? 六、实验要求及说明
1、 一人一组,完成程序设计及调试; 2、 实验报告须附录测试用例源代码。
bbbb