网站首页 > 技术文章 正文
说到加密,目前比较常见的有对称加密和非对称加密,那什么是对称加密和非对称加密呢,如图
对称加密
假如 一个人A想把信息m发给B 他不能直接把m给B,不然会被窃听到,所以A经过一个算法,比如+e,得到C,
然后A把这个C发送给B,B收到C之后,通过 -e 的方式就得到了信息m
(例如: A想把数字 2 传给B, A通过+1的方式把 3 传给了B, B收到 3 之后,通过-1的方式就得到了 2 )
m 是明文,就是我们要传递的信息
e 是密钥,就是加密的算法,是需要保密的
C 是密文,就是加密之后的信息
这个C可以是公开的,但由于不知道你的密钥,所以就没有办法知道要传递的m
简单来说就是通过e加密,也通过e去解密
非对称加密
还是这个例子,一个人A想把信息m发给B,B生成了两个有关系的e 和 d ,e称为公钥,d称为私钥,B可以通过公开的方式把e发给A
A通过e里面的某一个算法 例如+e 对m进行加密得到C,A也可以通过公开的方式把C发送给B,不对称的就不对称到这,B收到之后通过不是通过-e的方式,而是-d的方式,得到了信息m
也就是说 通过e加密,然后用d去解密
RSA
其中一个最经典的非对称就是RSA加密算法,那这个RSA是基于什么原理,公钥e和私钥d有一个怎么样的关系呢
首先 B先找出两个质数 p和q
计算 n = p * q
φ(n) = (p-1) * (q-1) 这个函数又叫欧拉函数
公钥e 1 < e < φ(n) 在这个范围取出一个整数,并且 e 和 φ(n) 互质
私钥d (e * d ) / φ(n) = x ······ 1 (x是几无所谓,余数必须是1,比如 φ(n)是20 e是3 那么d就是7)
加密 m^e / n =x ······ c (这几个x都代表任意数的商,在这里面没有直接意义,可以忽略不看,这三个x也都不相等)
解密 c^d / n =x ······ m (可以从数学上证明,经过这一系列的计算,得到结果的余数一定是m)
安全性
首先我们先知道 A 和 B都知道哪些东西,B会把公钥e 和一个大数n 传给A,而B自己会留下一个私钥的d和一个相同的大数n,而A会把密文c传给B
由于n,e,c是知道的 是可以公开的,但是不知道私钥d,是很难破解出要传递的信息m的
那能不能通过公钥e去破解私钥d呢?
如果用e破解d,那么你首先知道φ(n)等于多少,想求出φ(n)的话,就必须知道 p 和 q
由n = p * q 我们也知道n,也知道p和q是质数,要求出p和q,这个过程是质因数分解
一个小数的质因数分解很简单(比如 21 = 3 * 7),但是一个大数的质因数分解却很难,更何况1024位的大数n呢(目前还没有人类能做出来)
由于这个原因,所以人们才认为RSA算法是比较保密的
那有没有什么方式可以快速的计算大数的质因数分解呢?
如果用我们普通的计算机去计算这个大数的质因数分解的话,大概需要10年的时间,才能算出来,当然如果用量子计算机的,可能一个星期就算出来了。
希望我的理解对您有所帮助!
猜你喜欢
- 2025-07-01 Java 如何加载带密码的 PCKS8 PEM 私钥
- 2025-07-01 犯罪啊 2.8万台路由器居然共用一把RSA密钥
- 2025-07-01 HTTPS全站加密时代 网宿推证书优选方案
- 2025-07-01 如何在 Windows 11 或 10 上使用 Winget 安装 OpenSSH
- 2025-07-01 网络篇:朋友面试之https认证加密过程
- 2025-07-01 如何安全管理SSH密钥以防止服务器被入侵
- 2025-07-01 在 Windows 10 上实现免密码 SSH 登录
- 2025-07-01 HTTPS的加密过程是怎样的?(https加密和解密的过程)
- 2025-07-01 Linux系统实现SSH安全免密登录的设置与管理
- 2025-07-01 Burpsuit插件开发之RSA加解密(burpsuite安装插件)
你 发表评论:
欢迎- 590℃几个Oracle空值处理函数 oracle处理null值的函数
- 583℃Oracle分析函数之Lag和Lead()使用
- 570℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 568℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 564℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 556℃【数据统计分析】详解Oracle分组函数之CUBE
- 541℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 536℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)