生成私钥 p q rsa_【安全】理解 RSA 算法
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 算法相关推荐
- 带你彻底理解RSA算法原理
1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法.在了解RSA算法之前,先熟悉下几个术语 根据密钥的使用方法,可以将密码分为对称密码和公钥密码 对称密码:加 ...
- MAC OS下使用OpenSSL生成私钥和公钥的方法
MAC OS自带了OpenSSL,所以不用去编译那一坨跟SHIT一样的源码.直接在命令行里使用OPENSSL就可以. 打开命令行工具,然后输入 openssl打开openssl,接着只要三句命令就可以 ...
- 使用Openssl的RSA算法生成公私钥对
openssl的安装参考这里:openssl的安装指导 非对称加密算法:RSA1024 /2048 /3072 /4096 在需要放置公私钥对所在的文件夹下,按住shift键点击右键,选择" ...
- 信息安全-5:RSA算法详解(已编程实现)[原创]
转发注明出处:http://www.cnblogs.com/0zcl/p/6120389.html 背景介绍 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加 ...
- 奇妙的安全旅行之RSA算法
hi,大家好,我是开发者FTD.今天我们开始介绍非对称加密算法.非对称加密算法区别于对称加密算法的主要特点是,非对称加密算法有两个密钥:公钥 (public key) 和私钥 (private key ...
- 非对称加密算法之RSA算法实现
对称加密,非对称加密,公钥,私钥,RSA这些常常听到的,到底是怎么回事 有个同事问我公钥私钥到底为什么能互相解开,一时语塞,平时都只是知道怎么用,但很少去了解的更细,现在做个整理,记个笔记 非对称加密 ...
- RSA加密、解密、签名、验签(验证签名)RSA算法原理
转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...
- 使用Python实现RSA加密算法及详解RSA算法
代码已经放上github : https://github.com/chroje/RSA 一.非对称加密算法 1.乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. 2. ...
- RSA算法原理【超清晰】
目录 一.一点历史 二.互质关系 三.欧拉函数 四.欧拉定理 五.模反元素 六.密钥的生成步骤 八.加密与解密 九.私钥解密的证明 一.一点历史 了解一个东西,首先我们要关注他的历史. 1976年以前 ...
最新文章
- 【组队学习】【32期】推荐系统-新闻推荐系统实践
- python文件和目录
- 新概念机房运维监控三大新理念
- java锁的种类以及辨析(转载)
- 忘了PostgreSQL数据库的密码的解决方案
- jsp中有关于超链接的问题
- java学习论坛汇总
- 10 个 GitHub 上超火的 CSS 技巧项目,找到写 CSS 的灵感!
- 要来吗,不错的WPF技术交流群!(大批干货今日自取)
- 关于mysql内存表的一个帖子(转载)
- 【资源】领域自适应相关论文、代码分享
- mysql如何让自增id从1开始设置方法
- 爬虫套路知多少?反爬策略是关键
- 在数据库WSEDSQLDB中检测到一个可能的数据库一致性问题。|解决方法
- TCP/IP基础介绍
- 大一计算机理论知识测试题,2017计算机基础大一考试试题「附答案」
- PMP每日一练 | 考试不迷路-5.13
- java socket 连接异常_JAVA Socket连接服务器时可能抛出的异常
- 配音赚钱的软件有哪些 ?推荐以下这3个平台
- matlab 设置坐标轴位置/方向 y轴反向