05-密码学基础-RSA的介绍
1、什么是RSA?
RSA是一种公钥密码算法,它的名字由三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母组成的。 RSA被用于公钥密码和数字签名。 1983年,RSA公司为RSA算法在美国取得了专利,但现在该专利已经过期。
2、算法原理介绍
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:明文 |
3、算法举例
- 随机选择两个不相等的质数 : 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,所以无需推导.
4、RSA的用法
公钥加密、私钥解密
私钥签名、公钥验签
05-密码学基础-RSA的介绍相关推荐
- 密码学基础知识-数论(从入门到放弃)
数论知识 本文主要介绍整除.质数和合数.同余定理.模逆元素.欧几里得除法.欧拉函数.欧拉定理.费马小定理.中国剩余定理(孙子定理). 文章目录 数论知识 简介 一.整除 二.质数和合数 三.同余定理 ...
- 【笔记】公钥密码学之RSA
数论基础 素数 1.定义: 一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数):否则称为合数. 如:3×4 = 12,不是素数.11除了等于11×1以外,不能 ...
- 密码学:RSA加密算法详解
概述 本文旨在说明RSA加密算法的原理及实现,而其相关的数学部分的证明则不是本文内容. 版权说明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Q-WHai 发表日期: ...
- http、https、密码学基础、GET和POST区别
http协议相关: http协议的特性: http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080.http协议的的特点是无状态,无连接(并不是真的没有连接,而是在请求数据的时候 ...
- 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...
重力传感器 测重力代码 by Kamil Tustanowski 通过卡米尔·图斯坦诺夫斯基 "重力瀑布"如何帮助您教授孩子的密码学基础知识 (How "Gravity ...
- android log 如何获取double类型后小数点的值_【ES6基础】Symbol介绍:独一无二的值...
开篇 ES6之前我们都清楚JS有六种数据类型:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object),今天笔者讲的Symbol类型是 ...
- 计算机基础(07)密码学基础
今天的我们只要接触密码学相关的信息,那一定是经常会听说各种密钥啊,之类的,但这个东西到底是怎么发展来的呢?这里我们从密码学的发展.古典密码学和现代密码学等角度搞清楚密码学到底是怎么发展的,以及为什么后 ...
- 开发过程中那些不得不知道的密码学基础
Java密码学基础 发展历史 古典密码学 如凯撒密码.滚筒密码 近代密码学 如德国Enigma机,被图灵破解 现代密码学 编码算法 不是加密和解密,为了在网络间更方便的传输数据/本地存储字节数组而产生 ...
- PrivacyIN Week1课程回顾 | 张宇鹏博导开讲零知识证明密码学基础研究导论
转自:PrivacyIN 隐私学院 前言 隐私学院[PrivacyIN]第一期ZK训练营课程精讲内容上线啦,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学 ...
最新文章
- python运算符(算数运算符、赋值运算符、复合赋值运算符、比较运算符、逻辑运算符)
- html 写字版插件,JS+HTML5 Canvas实现简单的写字板功能示例
- 在jexus下如何简单的配置多站点
- 【软件工程实践 · 团队项目】 第一次作业
- Atiti 高并发程序设计 艾提拉著 目录 1. 第—部分 基础知识	2 1.1. 第1章 并行计算机的硬件基础 1.1 并行计算机的组成 1.2 共享存储器多处理器系统 1.3 消
- java反射机制面试详解
- Ubuntu安装和显卡驱动安装
- Anycubic Vyper 3D打印机串口屏改造开源项目之串口屏项目启动篇(一)
- 制作flash动画心得
- Prometheus Operator开始
- mac 设置mysql登录快捷键_史上最详细的苹果Macbook快捷键使用
- hive中的distribute by
- Scrapy框架爬取下载王者荣耀英雄壁纸
- 【源码】elfun18:计算各种椭圆积分和函数
- 西门子LOGO PLC的通讯、数据采集知识及PLC-Recorder连接方法
- dnf剑魂buff等级上限_DNF:半年前没人看得上,如今被开发成T0,这神话终于翻身了...
- uni-app 数据循环
- python上机实验10
- 打造自己的无人船(1)——树莓派环境搭建
- 高等统计物理考题--证明二维情况下不存在玻色爱因斯坦凝聚
热门文章
- 冷板式液冷--术语、定义和缩略语(6-1)
- 投资100亿美元,谷歌计划在2020年向美国办事处和数据中心
- 华擎b365m itx 黑苹果_迷你ITX小机箱装机实录,黑苹果首选
- vue 可视化布局工具_GitDataV一款Github的'大数据可视化平台'
- 成功解决Exception “unhandled ImportError“cannot import name ‘imread‘ from ‘scipy.misc‘
- 成功解决Exception unhandled OSError cannot open resource File: F:\Program Files\Python\Python36\Lib\si
- 《疯狂Java讲义》10
- 动态规划:求最长公共子序列和最长公共子串
- 429. N-ary Tree Level Order Traversal - LeetCode
- 【Python】python 反射机制在实际的应用场景讲解