说明:本文使用的数据来自网络,重复的太多了,也不知道哪篇是原创.

算法原理介绍

step 说明 描述 备注
1 找出质数 P 、Q -
2 计算公共模数 N = P * Q -
3 欧拉函数 φ(N) = (P-1)(Q-1) -
4 计算公钥E 1 < E < φ(N) E的取值必须是整数
E 和 φ(N) 必须是互质数
5 计算私钥D E * D % φ(N) = 1 -
6 加密 C = ME mod N C:密文 M:明文
7 解密 M =CD mod N C:密文 M:明文
step decription equation note
1 Find the prime pairs P 、Q -
2 Calculate the common module N = P * Q -
3 euler function φ(N) = (P-1)(Q-1) -
4 Calculate the public key - E 1 < E < φ(N) E must be an integer
E and φ(N) are prime numbers
5 Calculate the private key - D E * D % φ(N) = 1 -
6 encryption C = ME mod N C:ciphertext ,M:plaintext
7 decryption M =CD mod N C:ciphertext ,M:plaintext

算法举例

  • 随机选择两个不相等的质数 : p=61、q=53
  • 计算 n = p × q = 61×53 = 3233
  • 计算n的欧拉函数 : φ(n) = (p-1)(q-1) = 3120
  • 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质, 我们选择一个 e=17
  • 计算e对于φ(n)的模反元素d : d*e%φ(n)=1

支持 n e d都算出来了,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)

公钥能否推导出私钥,也就是n和e的情况下,推导出d

  • (1)ed%φ(n)=1, 推导d, 需要知道e和φ(n)
  • (2)φ(n)=(p-1)(q-1)。计算φ(n), 需要知道p和q
  • (3)n=pq。只有将n因数分解,才能算出p和q.

私钥能否推导出公钥,也就是n和d的情况下,推导出e

  • (1)ed%φ(n)=1, 推导e, 需要知道d和φ(n)
  • (2)φ(n)=(p-1)(q-1)。计算φ(n), 需要知道p和q
  • (3)n=pq。只有将n因数分解,才能算出p和q.

对于3233您可以进行因数分解(3233=61×53),那么对于下面一个这样很大的数字呢?

12301866845301177551304949
  58384962720772853569595334
  79219732245215172640050726
  36575187452021997864693899
  56474942774063845925192557
  32630345373154826850791702
  61221429134616704292143116
  02221240479274737794080665
  351419597459856902143413

它等价于:

33478071698956898786044169
  84821269081770479498371376
  85689124313889828837938780
  02287614711652531743087737
  814467999489
    ×
  36746043666799590428244633
  79962795263227915816434308
  76426760322838157396665112
  79233373417143396810270092
  798736308917

公钥(e,n)对明文m进行加密 : c = m^e % n
私钥(d,n)对密文c进行解密 : m = c^d % n

其中e和d是对等的,一样的地位,可以互换的. 所以,公钥推出私钥比较困难,那么私钥推出公钥也是比较困难.
另外,在密码学中,我们一般不说通过公钥并不是完全不能推算出私钥, 而是表述为:通过公钥推算私钥在计算上是困难的。

那么为什么我们在平时使用时,感觉的是公钥不能推导私钥,但私钥可以推导公钥呢?
因为在PEM或DER的编码格式中,公钥包含了N和E,私钥包含了N E D P Q等信息,也就是私钥已经包含了公钥,故私钥是能推出公钥的。
另外在通常使用中,e一般就等于65535,所以无需推导.


相关推荐:
         [crypto]-01-对称加解密AES原理概念详解
         [crypto]-02-非对称加解密RSA原理概念详解
         [crypto]-03-数字摘要HASH原理概念详解
         [crypto]-04-国产密码算法(国密算法sm2/sm3/sm4)介绍
         [crypto]-05-转载:PKCS #1 RSA Encryption Version 1.5介绍
         [crypto]-05.1-PKCS PKCS#1 PKCS#7 PKCS#11的介绍
         [crypto]-06-CA证书介绍和使用方法

[crypto]-30-The Armv8 Cryptographic Extension在linux中的应用
         [crypto]-31-crypto engion的学习和总结

[crypto]-50-base64_encode和base64_decode的C语言实现
         [crypto]-51-RSA私钥pem转换成der, 在将der解析出n e d p q dp dq qp
         [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
         [crypto]-53-openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)

[crypto]-90-crypto的一些术语和思考

[crypto]-02-非对称加解密RSA原理概念详解相关推荐

  1. [crypto]-01-对称加解密AES原理概念详解

    1.对称加解密 术语:P是明文,C是密文,K是密钥,E是加密算法,D是解密算 (1).常用的对称加解密有哪些? (2).加解密的模式 [ecb]这种模式是将整个明文分成若干段相同的小段,然后对每一小段 ...

  2. 加解密和数字证书详解

    一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...

  3. AUTOSAR Port原理概念详解

    温馨提示:关注公众号"嵌入式软件实战派"回复"AUTOSAR"获得整个AUTOSAR实战教程. 在前面的文章<AUTOSAR SWC详解>提到了Po ...

  4. rsa大数加密c语言,C语言:基于OpenSSL-RSA实现RSA非对称加解密

    关于OpenSSL的介绍和安装在此不多赘述,可以在网上找到很多相关资料,各位感兴趣可以去了解下(自觉对OpenSSL开源库只是初级使用阶段,也就不在此"秀下限"了),直接进入主题, ...

  5. rsa java代码_java加解密RSA使用方法代码示例

    最近为了分析一段请求流,不得不去研究一下RSA加密. 首先,强调一点:密钥的"钥"读"yue",不是"yao",额... 网上关于RSA的原 ...

  6. DES加解密算法原理详解与实现

    [DES密码编写] 1. Equipment (1) operating system version :WIN 10 (2) CPU instruction set: x 64 (3) softwa ...

  7. 白加黑加载方式_“白加黑减”即曝光补偿的应用方法及原理全面详解——致新手新新手...

    "白加黑减"即曝光补偿的应用方法及原理全面详解 --致新手新新手 本文对曝光补偿这一摄影基本技术及原理做一全面详细的分析和解释,旨在让受此困惑的新手能够从原理上彻底理解" ...

  8. 关于SSL原理的详解

    关于SSL原理的详解 SSL原理详解 一.SSL是什么? 二.建立SSL通道过程 1.简化篇 2.具体建立过程 总结 SSL原理详解 其实SSL从网上看到的资料很多了,但是发现还是没有将原理讲得特别清 ...

  9. BlockChain:BlockChain周边概念详解+个人理解

    BlockChain:BlockChain周边概念详解+个人理解 目录 1.拜占庭将军问题 2.共识机制 1.区块链的共识机制目前有以下几种 PoW PoS DPoS 其他共识机制 1.拜占庭将军问题 ...

最新文章

  1. 面向连接的Socket Server的简单实现
  2. tensorflow 模型压缩
  3. 如何面对你—LNMP高并发时502
  4. system-config-kickstart报错
  5. android jni 返回java类
  6. P4245 【模板】任意模数多项式乘法(NTT)
  7. 拼接SQL的一个技巧
  8. Spring Tool Suite 4安装Lombok
  9. 03-15 截图、日志与录屏
  10. Android仿人人客户端(v5.7.1)——新鲜事之下拉列表(过滤项列表)
  11. hadoop日常维护之问题解决01
  12. PhpStorm中如何使用FTP功能
  13. 常见的视频格式以及视频编解码标准(附带OpenCV实现视频的读取与保存)
  14. 永洪BI-报表生成URL
  15. EXCEL如何批量调整图片大小?
  16. split,splice,slice 三者的用法
  17. 怎么精细化管理客户关系?企业微信CRM系统可以做到吗
  18. alienware笔记本过热处理
  19. UI自动化偷懒必备:AirTest封装好ADB命令
  20. 高龄程序员——28岁土木专业半路出家进军java的我后来怎么样了?

热门文章

  1. 数据中心人员短缺,行业仍然充满挑战
  2. tushare pro接口_利用tushare获取新闻联播文字稿并制作词云
  3. Py之turicreate:turicreate的简介、安装、使用方法之详细攻略
  4. Python语言学习之数值、小数、空格那些事:python和数值、小数、空格的使用方法之详细攻略
  5. NVIDIA之AI Course:Getting Started with AI on Jetson Nano—Class notes(四)
  6. 成功解决model_selection\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in
  7. 成功解决from nets import inception_resnet_v2 ModuleNotFoundError: No module named 'nets'
  8. Algorithm之EM:Expectation Maximization简介、代码实现
  9. javaweb 要学习的东西
  10. Python基础训练题-简单数学公式