RSA算法

RSA算法是1977年由MIT三位密码学家Rivest、Shamirh和Adleman说发明的,是迄今为止最为成熟完善的公钥密码体制。

RSA算法能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法的原理:

基于数论构造,具体难题是大素数乘积的因子分解。将两个大素数相乘十分容易,但对其乘积进行因式分解却极其困难,因此可以将乘积作为加密密钥。如:

定义函数f为f(p,q)=pq,pq是两个大质数,那么我们很容易通过pq 得到f(p,q)

如果:

f(p,q)=322131149110455087323,求p,q.

这样就裂开了,在目前为止,还没有有效的算法能够解出。

其次在RSA算法中,公钥和私钥产生了,公钥和私钥的产生:

1.任意选择两个大的质数(素数)p和q,p不等于q,计算N=pq

2.根据欧拉函数,不大于M且与N互质的整数个数为(p-1)(q-1)

3.选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)

4.用以下这个公式计算d:d*e=1(mod(p-1)(q-1))

5.将p和q销毁后,(N,e)是公钥,(N,d)是私钥

如:

选素数p=47和q=71,得N=3337,(n)=(47-1)*(71-1)=3220

RSA算法加密:

1.假设Bob想给Alice送一个消息,他知道Alice产生的公钥N和e

2.将原始信息分为多段,每一段(假定为n)分别用以下公式计算出c:

3.将多个n计算出的多个c串在一起,就是密文,发送即可。

列如:公钥(N,e)=(3337,79),私钥(N,d)=(3337,1019)

现要发送明文688,计算:688^79(mod3337)=1570

RSA算法解密:

Alice得到Bob的信息c后就可以利用她的密钥(N,d)来解码。

她可以用以下这个公式来将c转换为n:

                c^d=n(modN)

得到n后,她可以将原来的信息m重新复原。

例如:公钥(N,e)=(3337,79),私钥(N,d)=(3337,1019)

收到密文1570后,用私钥d=1019进行解密:

        1570^1019(mod3337)=688

这就是RSA算法在密码学中的使用过程,和算法原理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值