RSA加密与解密的简单实现

文章目录

  • 前言
  • 一、RSA简介:1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"
  • 二、RSA加密的算法的实现
    • 1.随意选择连个大的质数p和q(注意这里要足够大不然很容易被破解还应该是质数)N=p*q
    • 2.计算r= (p-1)(q-1)根据欧拉函数
    • 3.选取e 要求要与r互质 e的范围是0


前言


一、RSA简介:1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、RSA加密的算法的实现

1.随意选择连个大的质数p和q(注意这里要足够大不然很容易被破解还应该是质数)N=p*q

2.计算r= (p-1)(q-1)根据欧拉函数

3.选取e 要求要与r互质 e的范围是0

4.计算d 公式为 d*emodN(其中这个mod是取余的意思)

5.其中(N,e)是公钥,(N,d)是私钥

6.加密 如图

RSA加密与解密的简单实现_第1张图片

三、举个例子

First: 取两个质数 p q 分别为 3 和11;所以就确定了N的值为311
为33(通常应该取很大的数,但这里为了计算方便选取了小的质数)
Second :计算r的值(p-1)
(q-1)这里值为20
Third:选取e与 m互质数为7 (这里不唯一,按照要求取就完了)
Four:计算d (与N作为秘钥不可外传)d*emod r =1
这里取d取3 大功告成
Last but not least :选取明文 3 利用上述加密公式 密文为7 解密为3 是不是很神奇
可以自己算一下 要动手才行

代码如下(示例):

这里可以用python 代码 跑一跑 得到 秘钥 d

t= 20
i=0
e= 7
while True:
    if(1+t*i)%e==0:
        break
    i+=1

print(i)

```c
#得到i之后 输出d相关代码为
print((1+i*r)/e)

四、RSA的优缺点

#优点

1. 不需要进行密钥传递,提高了安全性

2.可以进行数字签名认证

#缺点

1.加密解密效率不高,一般只适用于处理小量数据(如:密钥)

2.容易遭受小指数攻击

注:可以采用 Linux 系统工具gmpy2,直接求d

import gmpy2
p=
q=
e= 
d= gmpy2.invert(e,(p-1)*(q-1))
print(d)

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了RSA的内容,和实现 相关 更多内容将会在以后发布

你可能感兴趣的:(密码学,安全)