RSA理解
来源:互联网 发布:java认证培训学校 编辑:程序博客网 时间:2024/06/04 19:29
RSA算法:
生成密钥对
加密
解密
一.其中生成密钥对:
1.随机生成两个足够大的素数p,q
爱丽丝选择了61和53.(实际中,质数越大越难破解)
2.计算公共模数n=p*q
n=61*53(n的二进制位数就是密钥长度,RSA密钥一般为1024位,重要场合为2048位)
3.计算n的欧拉函数φ(n)=(p-1)(q-1)
φ(3233)=60*52=3120
4.随机选择一个整数e,条件是e在1和φ(n)之间,且e与φ(n)互质
这里选取17(实际中常常选择65537)
5.计算e对于φ(n)的模反元素d:ed-1=kφ(n)
d=2753
6.将n和e封装成公钥,n和d封装成私钥:公钥:(n,e)、私钥:(n,d)
公钥:(3233,17)
私钥:(3233,2753)
共出现六个数字:
p
q
n: 公钥
φ(n)
e: 公钥
d: 私钥
二.破解(只知道n和e):
(1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d:ed=1+kφ(n)
(2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。
(3)n=pq。只有将n因数分解,才能算出p和q。
结论:如果n可以被因数分解,d就可以算出,也就意味着破解成功。
大概是人类已经分解的最大整数(232个十进制位,768个二进制位)
三. 加密和解密
加密:me ≡ c (mod n)
爱丽丝的公钥是 (3233, 17),鲍勃的m假设是65,那么可以算出下面的等式:
6517 ≡ 2790 (mod 3233)
于是,c等于2790,鲍勃就把2790发给了爱丽丝。
解密:cd ≡ m (mod n)
27902753 ≡ 65 (mod 3233)
也就是说,c的d次方除以n的余数为m。
这里看到,不知道d没办法解密,而d必须分解n,这是极难做到的。所以RSA保证了安全。
若加密大于n的整数:
分割为短消息
先用对称加密算法加密信息,再用RSA公钥加密DES密钥
四.私钥加密的证明
由欧拉定理可以证明
- 理解RSA
- RSA理解
- RSA加密算法个人理解
- 粗浅理解RSA
- RSA算法理解
- 怎么理解RSA算法
- rsa加密算法的理解
- RSA算法,自己的理解!
- [转载]理解 RSA/DSA 认证
- RSA加密算法的肤浅理解
- MD5 和 RSA 加密算法理解
- 对RSA加密的理解
- 对于RSA加密算法的理解
- 带你彻底理解RSA算法原理
- 对于RSA算法的一些理解
- RSA非对称 详细理解与使用
- RSA非对称加密(简单理解)
- 理解RSA算法原理,将有助于理解计算机
- Docker 安装 TensorFlow GPU 实战
- jquery的load函数实现页面的局部加载
- 交互式动画相关类,协议
- Elasticsearch_dsl(python)的搜索|查询|聚合操作实例
- 一键升级python
- RSA理解
- npm --save-dev --save 的区别
- linux 中 init,inittab, init.d, rcX.d 系统启动之间的调用关系关系
- Github入门教程系列(一)Git GUI for Windows的建库、上传、克隆、下载、合并
- Java中String str = new String("abc");创建了几个对象?
- win10 断线 自动拨号 bat 脚本
- 我的第一个Mybatis!
- js中几种实用的跨域方法原理详解(实用)
- Sublime Text 3 注册码