网络安全_密码学实验_非对称加密算法RSA
一、实验环境
PyCharm 2019.2.4 (Professional Edition) & Python 3.7
二、非对称加密RSA
1.理解RSA算法原理
2.加密过程
2.1 首先随机生成两个素数p,q(保密)
在这里使用random库就可以生成一个随机数,然后判断是否为一个素数,如果是一个素数,返回True,如果不是,返回False。
2.2 计算n=pq(公开),欧拉函数值f(n) = (p-1)(q-1)(保密)
2.3 随机选取正整数 1<e<f(n),满足gcd(e,f(n))==1
2.4 计算d,满足 d*e≡1(mod f(n))
2.5 由此得到公钥(N,E),私钥(N,D)
2.6 加密变换:对于明文 m∈Zn,密文为c=m^e mod n.
这里使用了大数的幂次取模,将幂指数转换成二进制求解,该算法是由高德纳提出的。算法如下图:
解密过程
解密变换:对于明文 c∈Zn,明文为m=c^d mod n.
解密过程同样运用了大数的幂次取模,和加密过程的基本原理相同,此处不过多赘述。
#三、 运行结果
运行本程序,显示功能清单,选择RSA加密、RSA解密或者退出。首先,选择1,随机生成两个素数p,q,计算n,f(n),随机选取正整数e,计算d,从而得到公钥和私钥。输入明文(明文长度不受限制),回车,生成密文。
然后,选择2,接着输入私钥,回车,显示明文。最后,选择q,退出。