非对称加密之RSA

公钥,私钥产生,一共和6个数有关:

p, q , n , φ(n) , e , d

下面详细说下这几个数的含义,与产生步骤


1. 随机产生两个不相等的质数 p , q

61 和 53

**2. n 为p q 的乘积 **

n = 61*53 = 3233

*3. 计算欧拉函数 φ(n) = (p-1)(q-1) **

  φ(n) = 60*52 = 3210

4. 随机选择一个整数 e, 条件是1< e < φ(n),且e与φ(n) 互质 (实际上,经常选择65537)

选择 17, e=17

** 5. 计算 e 对于φ(n) 的模反元素 d**

    ed ≡ 1 (mod φ(n))
    试子可以推导为:
    ed - 1 = kφ(n)  >>>  ed + φ(n)k = 1 

    >>  e 和 φ(n) 都是知道的 >> 17d + 3210k = 1
    根据 ** 扩展欧几里得算法 ** 知道一定有整数解 d 和 k 
    有(2753,-15),d= 2753

**6. 将n和e封装成公钥,n和d封装成私钥 **

各自组成:
私钥  n = 3323 和 d = 2753
公钥  n = 3323 和 e =17

这六个数字之中,公钥用到了两个(n和e),其余四个数字都是不公开的。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。

那么,有无可能在已知n和e的情况下,推导出d?

    (1)ed ≡ 1 (mod φ(n))。 只有知道e和φ(n),才能算出d。
    (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
    (3)n = pq。只有将n因数分解,才能算出p和q。

** 可以推出,只有将 n 质因数分解算出 p和q,才能得到d , 破解私钥 **

但是大整数的因数分解是非常困难的。到现在,除了暴力破解没有什么特别有效的方法。所以如果,你的n 取得特别大,密钥的长度足够长,就无法破解了。
实际应用中,密钥的长度一般是1024位,安全要求高的情况是2048位(目前人类的能分解的最大整数十 2^768),所以1024是相当安全的。


怎么加密解密

加密,公钥(n,e),对面信息m数字(字符串可以是编码),m要小于n
m^e ≡ c (mod n)
代入公钥(3323,17)
65^17≡ 2790 (mod 3233)
c= 2790,就是加密之后的数字

解密,私钥(n,d)来解密
c^d ≡ m (mod n)
2790^2753 ≡ 65 (mod 3233)
解密出了 m = 65

其实我还要好多细节不懂,数学基础太弱了.......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 姓名:于川皓 学号:16140210089 转载自:https://baike.baidu.com/item/RS...
    道无涯_cc76阅读 7,575评论 0 1
  • 这是去年12月在CSDN写的一篇加密算法文章 现在决定在简书写博客 移植过来方便复习再理解。 最近算法课老师要求小...
    icecrea阅读 5,147评论 1 1
  • 生成密钥随机选择两个不相等的质数p和q。例:61和53。(实际应用中,这两个质数越大,就越难破解。)计算p和q的乘...
    未知代码阅读 3,582评论 0 1
  • 前言 本文的RSA例子代码更新在我的github上。 RSA算法是最重要算法之一,它是计算机通信安全的基石,保证了...
    game3108阅读 14,016评论 2 53
  • 参考文献 《PKI/CA 与数字证书技术大全》书籍 ECC加密算法入门介绍如有理解bug, 请大家指正。 非对称加...
    走在成长的道路上阅读 4,314评论 0 1

友情链接更多精彩内容