| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 对称加密与非对称加密 -> 正文阅读 |
|
[网络协议]对称加密与非对称加密 |
一:对称加密1:原理
通信双?使?同?个密钥,使?加密算法配合上密钥来加密,解密时使?加密过程的完全逆过程配合密钥来进?解密。
举个简单的例子:
按规则使?不同的?字来替换掉原先的?字来进?加密。
?
加密算法:替换?字 密钥:替换的码表 以上的例子就是最简单的对称加密的实现。 2:经典算法DES(56 位密钥,密钥太短?逐渐被弃?)、AES(128 位、192 位、256 位密钥,现在最流?) 当然还有其他的算法,但这2种贵在金典。。 3:对称加密作?加密通信,防?信息在不安全?络上被截获后,信息被?读取或篡改。 4:对称加密的缺点
密钥泄露:不能在不安全?络上传输密钥,?旦密钥泄露则加密通信失败
二:非对称加密1:原理
使?公钥(加密密钥)对数据进?加密得到密?;使?私钥(解密密钥)对数据进?解密得到原数据。公钥和私钥是不相同的,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图 2-1 举个简单的例子(不用深究,但是足以体现非对称加密的最核心的原理,运用各种移位、溢出等算法):假如你遇到危险,这时候要发送个110求救,以防被截获咱们得给它加密一下
2:使用场景进行网络通信,非对称加密是怎么做到可以在不安全的网络环境下进行安全的通信的呢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图 2-2 通信双方把加密秘钥给对方,然后双方怎么通信呢?图2-3中A通过B的加密秘钥加密数据后发给B,B就可以用B的机密秘钥进行解密,这样就实现的通信了。 ? ? ? ?那像C也是可以获取到A、B的机密秘钥的,但是C没有A、B的解密秘钥,所以即使C获取的到秘文,也无法进行解密。但是C在拥有A/B的加密秘钥,那C不就可以冒充A、B进行传数据了吗,那要怎么保证传数据的那一方是实际数据来源方呢?在后面我们会进行讲解,继续往下 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 图 2-3 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 图 2-4 ?图2-3和图2-4是一样的,从公钥的命名也可以知,公钥是可以公开的,但是私钥是一定要握在自己手上。很多时候公钥是可以通过私钥计算出来的,用的是椭圆曲线算法,比特币用的一种算法,所以如果拿到了私钥就等于同时拿到了公钥,可见私钥不能公开的必要性。 公钥能不能解私钥? 答案是能,可互相解 签名和验证由于私钥和公钥互相可解,因此?对称加密还可以应?于数字签名技术。即用来证明发信息者的身份 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?图 2-5 如图2-5原数据通过私钥加密后(签名),生成签名数据,那对方就可以通过对应的公钥进行解密(验证)。由于别人没有我的私钥,就无法造出我的数据,也就无法冒充我了 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??图 2-6图2-6是比较标准的签名流程,会把原数据一起发送,这个是主要是为了验证方便 ?加密+签名?在实际的使用过程,常会对原数据hash以后对hash签名,然后附加在原数据的后?作为签名。这是为了让数据更?。 ?加密+签名(完整)? 3:经典算法RSA(可?于加密和签名)、DSA(仅?于签名,但速度更快) 三:Hash1:定义常会对原数据hash以后对hash签名,然后附加在原数据的后?作为签名。这是为了让数据更?。 2:作?相当于从数据中提出摘要信息,因此最主要?途是数字指纹。 3:实际用途??数据完整性验证从?络上下载?件后,通过?对?件的Hash值(例如MD5、SHA1),可以确认下载的?件是否有损坏。如果下载的?件Hash值和?件提供?给出的Hash值?致,则证明下载的?件是完好?损的。 ?唯?性验证?如JAVA中验证,要重写hashCode() 隐私保护当重要数据必须暴露的时候,有事可以选择暴露它的Hash值(例如MD5),以保障原数据的安全。 例如?站登录时,可以只保存?户密码的Hash值,在每次登录验证时只需要将输?的密码的Hash值和数据库中保存的Hash值作?对就好,?站?需知道?户的密码。这样,当?站数据失窃时,?户不会因为??的密码被盗导致其他?站的安全也受到威胁。 加盐:由于彩虹表的存在,存储了很多常用密码对应的Hash值,这样就相当于破解了hash加密过的值,这时候加上一些自己特有的值一起hash,这样值就和直接Hash的值就不同了。 快速查找HashMap 经典算法MD5、SHA1、SHA256 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:24:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |