Public-key Crytography简介

Public-key cryptography (公开密钥加密) 又称 asymmetric cryptography (非对称加密),即存在两把不同的密钥,分别称为公钥 Pu 和私钥 Pr,公钥通常用来加密明文 M,只有私钥才能解密密文 C,如果用 E 和 D 分别表示加密和解密算法,那么有:

C = E(Pu, M)M = D(Pr, C)

下图(摘自维基百科)形象的表述了加密和解密流程:

     

传统的对称加密需双方共享相同的密钥,通信安全很大程度依赖双方是否能妥善的管理密钥。公开密钥加密发明是密码学最为重要的里程碑之一,它从数学的角度保证了通信安全。公开密钥加密体系有三大范畴:

1、Encryption/Decryption:即加密与解密,发送方用接收方的公钥加密消息;2、Digital Signature:数字签名,发送方用私钥加密消息摘要生成签名,保证消息的完整性和可靠性;3、Key Exchange:安全的交换密钥,通常用于交换对称加密的密钥。

公钥加密有多种算法,最有名的的是 RSA 和 DH 等,如下:

+----------------+-----------------------+-------------------+--------------+|   Algorithm    | Encryption/Decryption | Digital Signature | Key Exchange |+----------------+-----------------------+-------------------+--------------+|      RSA       |          Yes          |        Yes        |      Yes     |+----------------+-----------------------+-------------------+--------------+| Deffie-Hellman |          No           |        No         |      Yes     |+----------------+-----------------------+-------------------+--------------+| Elliptic Curve |          Yes          |        Yes        |      Yes     |+----------------+-----------------------+-------------------+--------------+|      DSS       |          No           |        Yes        |      No      |+----------------+-----------------------+-------------------+--------------+

数论知识

理解 RSA 算法前,先介绍一些必要的数论领域知识。

欧拉函数

对正整数 n,欧拉函数 指小于 n 且与 n 互质的正整数数目,通常用 φ(n) 表示。

对于素数 p,有:φ(p) = p - 1对于素数 p, q 有:φ(p * q) = φ(p) * φ(q) = (p - 1) * (q - 1)如 φ(21) = 2 * 6 = 12

欧拉定理

对于正整数 a 和 n,欧拉定理有:

a^φ(n) mod n = 1即:a^(φ(n) + 1) mod n = a mod n

模反元素

当 a, n 互质,一定存在模仿元素 b,使得:

a * b mod n = 1由欧拉定理可知:1 = a^φ(n) mod n = a * a^(φ(n) - 1) mod n可求得一个 b = a^(φ(n) - 1),满足 a * b mod n = 1

RSA算法原理

RSA 简介

RSA 算法于 1977 由 Ron Rivest,Adi Shamir 和 Leonard Adleman 提出,是目前应用最为广泛的非对称加密算法。极大数分解难题是 RSA 算法可靠性的根基,即给定两个大素数 p 和 q,其中 n = p * q,有:

已知 p、q,求 n = p * q 很容易已知 n,求 p、q,并且 p * q = n 很困难

RSA 原理

对于明文 M 和 密文 C,且 M < n, C < n,其加密和解密过程如下:

C = M^e mod nM = C^d mod n上述公式可表述为:M = M^(e * d) mod n根据欧拉定理可知:只需 e * d mod φ(n) = 1,即可满足上式如果我们选取素数 p, q,那么:n = p * q 容易计算φ(n) = (p - 1) * (q - 1) 容易计算很容易选取一个正整数 e,e 和 φ(n) 互质当 e 和 φ(n) 互质时:由欧拉定理可很容易算出一个模反元素 d,满足 e * d mod φ(n) = 1

RSA 流程

Cryptography and Network Security 形象的描述了 RSA 流程:

+-------------------------------------------------------------------------------+|                                 Key Generation                                ||                                                                               ||     Select p, q                               p and q both prime, p != q      ||     Calculate n = p * q                                                       ||     Calculate φ(n) = (p - 1) * (q - 1)                                        ||     Select integer e                          e is relatively primte to φ(n)  ||     Calculate d                               (d * e) mod n = 1               ||     Public key                                PU = {e, n}                     ||     Private key                               PR = {d, n}                     |+-------------------------------------------------------------------------------++-------------------------------------------------------------------------------+|                                  Encryption                                   ||                                                                               ||     Plaintext M                               M < n                           ||     Ciphertext C                              C = M^e mod n                   |+-------------------------------------------------------------------------------++-------------------------------------------------------------------------------+|                                  Decryption                                   ||                                                                               ||     Ciphertext C                              C                               ||     Plaintext M                               M = C^d mod n                   |+-------------------------------------------------------------------------------+

欢迎关注交流探讨!

生成私钥 p q rsa_【安全】理解 RSA 算法相关推荐

  1. 带你彻底理解RSA算法原理

    1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法.在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加 ...

  2. MAC OS下使用OpenSSL生成私钥和公钥的方法

    MAC OS自带了OpenSSL,所以不用去编译那一坨跟SHIT一样的源码.直接在命令行里使用OPENSSL就可以. 打开命令行工具,然后输入 openssl打开openssl,接着只要三句命令就可以 ...

  3. 使用Openssl的RSA算法生成公私钥对

    openssl的安装参考这里:openssl的安装指导 非对称加密算法:RSA1024 /2048 /3072 /4096 在需要放置公私钥对所在的文件夹下,按住shift键点击右键,选择" ...

  4. 信息安全-5:RSA算法详解(已编程实现)[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...

  5. 奇妙的安全旅行之RSA算法

    hi,大家好,我是开发者FTD.今天我们开始介绍非对称加密算法.非对称加密算法区别于对称加密算法的主要特点是,非对称加密算法有两个密钥:公钥 (public key) 和私钥 (private key ...

  6. 非对称加密算法之RSA算法实现

    对称加密,非对称加密,公钥,私钥,RSA这些常常听到的,到底是怎么回事 有个同事问我公钥私钥到底为什么能互相解开,一时语塞,平时都只是知道怎么用,但很少去了解的更细,现在做个整理,记个笔记 非对称加密 ...

  7. RSA加密、解密、签名、验签(验证签名)RSA算法原理

    转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...

  8. 使用Python实现RSA加密算法及详解RSA算法

    代码已经放上github : https://github.com/chroje/RSA 一.非对称加密算法 1.乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. 2. ...

  9. RSA算法原理【超清晰】

    目录 一.一点历史 二.互质关系 三.欧拉函数 四.欧拉定理 五.模反元素 六.密钥的生成步骤 八.加密与解密 九.私钥解密的证明 一.一点历史 了解一个东西,首先我们要关注他的历史. 1976年以前 ...

最新文章

  1. 【组队学习】【32期】推荐系统-新闻推荐系统实践
  2. python文件和目录
  3. 新概念机房运维监控三大新理念
  4. java锁的种类以及辨析(转载)
  5. 忘了PostgreSQL数据库的密码的解决方案
  6. jsp中有关于超链接的问题
  7. java学习论坛汇总
  8. 10 个 GitHub 上超火的 CSS 技巧项目,找到写 CSS 的灵感!
  9. 要来吗,不错的WPF技术交流群!(大批干货今日自取)
  10. 关于mysql内存表的一个帖子(转载)
  11. 【资源】领域自适应相关论文、代码分享
  12. mysql如何让自增id从1开始设置方法
  13. 爬虫套路知多少?反爬策略是关键
  14. 在数据库WSEDSQLDB中检测到一个可能的数据库一致性问题。|解决方法
  15. TCP/IP基础介绍
  16. 大一计算机理论知识测试题,2017计算机基础大一考试试题「附答案」
  17. PMP每日一练 | 考试不迷路-5.13
  18. java socket 连接异常_JAVA Socket连接服务器时可能抛出的异常
  19. 配音赚钱的软件有哪些 ?推荐以下这3个平台
  20. matlab 设置坐标轴位置/方向 y轴反向

热门文章

  1. 看一下即将发布的JSF 2.3 Push支持
  2. 测试驱动开发 测试前移_测试驱动开发–双赢策略
  3. 设计模式的Java 8 Lambda表达式–策略设计模式
  4. hibernate脏数据_Hibernate性能提示:脏收集效果
  5. 使用拦截器分析Java EE应用程序的性能下降/提高
  6. Java 8中的Base64 –加入乐趣为时不晚
  7. 如何在Ubuntu上轻松安装Oracle Java
  8. Java Comparable接口的陷阱
  9. 臭名昭著的Java错误和陷阱
  10. EJB 3.1全局JNDI访问