RSA公钥加密算法的理解的整理

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

下面我就来根据我所在网上看的资料 自己整理一下整个加密解密的过程

首先 假设甲方要向乙方发送消息  那么甲方需要对消息加密  乙方需要对消息解密  

加密算法分为对称性和非对称性2种算法  根据加密解密所使用的秘钥相不相同来区分, 我们要讨论的RSA算法就是非对称性的  也就是加密的公钥和解密的私钥是不同的  

由于公钥是公开的 可以给别人看到所以不需要保护,只需要保护好私钥不被窃取即可,通常私钥的窃取都是在传输的过程中进行的,所以只要防止私钥的传输就好了。

因此甲方发送消息给乙方,所以乙方产生公钥和私钥,之后将公钥公开,用于甲方对消息加密,然后乙方自己拥有私钥,只需要使用私钥解密即可。


那么乙方是如何产生公钥和私钥的呢??


1.由乙方随机选择两个质数 p、q(p!=q)  这里先假设为p = 61和q = 53  

2.由p和q计算n  n = p * q = 61*53 = 3233

   n的二进制长度就为秘钥的长度  RSA算法的秘钥越长越安全,通常采用1024位 重要的时候用2048位 

3.计算欧拉函数   也就是求 比n小的和n互质的数的个数  这里表示为f(n)

   f(n) = f(p*q) = f(p)*f(q)  

  由于p和q为质数  

所以 f(n) = (p-1)*(q-1) 

所以 f(3233) = 60*52 = 3120  

4. 随机选择一个数e  使得1<e<f(n) 并且e与f(n)互质  通常如果可以e选 65537 

   此处e选择 17

5.计算e相对于f(n)的模反元素d   公式如下:

   ed = 1(mod f(n))  //此公式表示 ed%f(n) = 1 ..

   所以  ed - 1 = k*f(n)  =》 ed +(-k)*f(n) = 1  //此方程可用扩展欧几里得算法解答。。

  进而求出 d和  k  

  此处  d求得为 2753  所以 公钥即为(n,e)  私钥为(n,d)

                                                         (3233,17)    (3233,2753)

以上乙方就求得了 公钥和私钥  

之后甲方通过公钥加密  :

假设 消息为m   用公钥(n,e) 对 m加密的过程如下(c为加密后的密文):

   m^e = c (mod n )   即  65^17 = c( mod 3233)   求得  c  = 2790


然后乙方通过秘钥对其解密 :

c^d = m (mod n)     即 2790^2753 = m( mod 3233)  求得 m = 65  



至此 RSA 算法的加密解密过程就完成了   其中加密解密过程的运算和 扩展欧几里得算法还有待研究 。



   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值