RSA算法原理

参考的网络资源如下:

https://blog.csdn.net/linuxandroidwince/article/details/81141815

http://bank.hexun.com/2009-06-24/118958531.html

https://baike.baidu.com/item/RSA%E7%AE%97%E6%B3%95/263310?fr=aladdin

算法发明人

Ron Rivest, Adi Shamir, Leonard Adleman.

简介

   RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法。
  RSA的安全基于大数分解的难度。其公钥和私钥是一对大质数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大质数之积(这是公认的数学难题)。 

RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:

数学知识

这个很重要,所以标题放在前面。

考虑到对整体的理解,或者你数学很好根本不需要,内容放在本文最下方。

算法描述(及说明

(1)首先任意选择两个不相等的质数p和q 
(2)计算p和q的乘积n,令p=61, q=53,则n = 61×53 = 3233 
3)计算n的欧拉函数φ(n) = (p-1)(q-1)      φ(3233)=60×52=3120 
4)随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质 
在1到3120之间,随机选择了17,e=17。
5)计算e对于φ(n)的模反元素d 
根据前面模反元素公式e^φ(N)=e*e^φ(N-1)≡1mod(N),这个公式中的N等于这里的φ(n), 令d=e^φ(N-1), 则ed≡1mod(N),即 
ed ≡ 1 (mod φ(n)) 
这个式子等价于 
ed - 1 = kφ(n) 
于是,找到模反元素d,实质上就是对下面这个二元一次方程求解 
ex + φ(n)y = 1 
已知 e=17, φ(n)=3120 
17x + 3120y = 1 
这个方程可以用”扩展欧几里得算法”求解,此处省略具体的计算过程,有兴趣可以研究下这个算法,算出一组整数解为 (x,y)=(2753,-15),即 d=2753。至此所有计算完成。 
6)将n和e封装成公钥,n

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值