IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 对称加密、非对称加密深度解析 -> 正文阅读

[网络协议]对称加密、非对称加密深度解析

密码学的发展

加密的发展史随着人类的进化逐步复杂、严谨也更安全,对于早期的移位和字母对应等加密方式我们不难理解。

  • 移位 : 比如恺撒密码, 简单点说将 26个英文字母的顺序打乱,得到一个新的字母顺序,之后的英文或是拼英组成的单词就无法直接看出是什么了。
  • 字母对应 :比如使用一个密码本, 原文通过对应的字母进行转换。

后来出现了更高级的使用密钥的方式加密,加密和解密使用相同的密钥, 密钥越长,解密就越难。 到1976年出现了非对称加密。

加密的分类

按照密文是否可以被还原,可以将加密分为可逆加密和不可逆加密。严格意义上说,不可逆加密应该算不上加解密的范畴,但是实际开发过程中,还是会使用到使用不可逆加密的方法对某些信息进行加密,比如用户的登录密码。

不可逆加密和可逆加密

  • 不可逆加密: 信息摘要和安全散列。将任意大小的原始数据变换成规定长度的输出,获取内容的数字指纹。算法比如MD5,SHA1,PBKDF2,bcrypt。
  • 可逆加密: 基于算法,可逆加密又分为对称加密和非对称加密。

对称加密和非对称加密

  • 对称加密: 加密密钥和解密密钥相同
  • 非对称加密: 加密密钥和解密密钥不相同

在对称加密中,密钥就是一个数字,长度越长, 破解越困难,加解密流程如下:
在这里插入图片描述

非对称加密有两个密钥,一个公钥一个私钥。 加密和解密使用不同的密钥。加解密流程如下:
在这里插入图片描述

除了公钥加密,私钥解密;也可以使用私钥加密,公钥解密。两者都有着实际的应用。

  • 公钥加密,私钥解密。主要用于通信
  • 私钥加密(签名),公钥解密(验证), 用于数字签名

加密算法汇总

不同的加密类型,对应的加密算法有:

  1. 基于算法的加密算法, 也称为古典加密算法, 比如base64, 比特币生成地址使用的base58。 这类算法对原始内容进行置换和替换得到密文, 安全性依赖于算法是否外泄。
  2. 对称加密算法。 加解密使用同一个密钥。算法常见的有DES、3DES、AES。安全性从依赖算法转向依赖于密钥。
  3. 非对称加密。 加解密使用同不同的密钥。常见算法:RSA, DH , ECC。
对称加密非对称加密
DES , AES ,3DES,PBERSA ,DH, ECC
  • DES已经被AES所取代

对称加密算法

  1. DES , 数据加密算法
    DEA( Data Encryption Algorithm, 数据加密算法)。
  • 1997 年 DES标准正式发布, 分组长度64比特,其中8比特为奇偶校验位, 所以实际长度为56比特。

DES密钥的实质长度是56比特(7个字节)。
示例:

  • 二进制: 01010001 11101100 01001011 00010010 00111101 01000010 00000010
  • 十六进制:51 EC 4B 12 3D 42 02
  • 十进制:2305928028626269954

可以使用两个DES密钥(DES-EDE2)和三个DES密钥(DES-EDE3)。DES-EDE2长度112比特(14个字节),DES-EDE3长度168比特(21字节)。
示例:

  • DES-EDE2: 51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F
  • DES-EDE3: 51 EC 4B 12 3D 42 03 30 04 D8 98 95 93 3F 24 9F 61 2A 2F D9 96
  1. AES
    密钥长度可以从128、192和256个比特中选择。

  2. PBE 基于口令的密码
    PBE ( Password Based Encryption, 基于口令的密码)。是一种基于口令生成密钥, 并使用该密钥进行加密的方法。
    加密和解密使用的是同一个密钥。

  • 如同饭菜上加盐会改变饭菜的味道, 口令中加盐会改变生成的KEK值。

  • KEK (Key Encryting Key,密钥加密密钥), 将盐和口令通过单向散列函数, 得到的散列值就是用来加密密钥的密钥。

在Java语言中使用PBE 加密可以参考:
Java使用PBE算法进行对称加解密最简入门和示例

非对称加密的理解

非对称加密来源于数学中的大质因数分解很难的问题,基于欧几里得的证明, 每个数只有一种质因数分解, 一个大整数分解成一堆质数很难。
理解非对称加密, 需要回顾一下下面的数学概念:

  • 素数:又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
  • 互质,又称互素。若N个整数的最大公因子是1,则称这N个整数互质。
  • 模运算即求余运算。比如 10%3 , 10除以3的余数是1, 所以求模的结果是1。
  • 欧拉函数

任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?
计算这个值的方法就叫做欧拉函数,以φ(n)表示

举例来说:
对于一个很小的数 7, 分解为两个质因数的乘积很容易。但是对于一个大一点的数 589 就很难直接得到答案了(589 =19*31),如果一个更大的数呢?比如54225。
以RSA算法为例,公钥与私钥虽然是一对密钥,但密钥值不同,这对密钥值的生成就建基于大素数的乘积与分解上。

如果上面对非对称加密还不够了解的话,也可以从颜色的角度理解非对称加密的公私钥。

颜色的比喻

混合颜色是一个单向函数, 两个颜色混合输出第三种颜色很简单, 但是反过来就很难。

首先了解一下什么是互补色:每个颜色都有一个互补色,两个互补色叠加得到白光。

  • 张三选了两个互补的颜色, 将其中一个作为公钥发给李四
  • 李四选了一个颜色, 他将这个颜色和张三混合色的颜色发给张三
  • 张三使用自己保留的颜色,叠加到李四的混合色上面。就得到了李四的颜色。
    即使李四混合后的颜色被别人知道了, 也很难破译出李四的颜色。

对称加密和非对称加密的优缺点和应用

  • 对称加密速度快
  • 非对称加密更安全

非对称加密在实际中会结合对称加密使用。常用的使用非对称算法获得共享密钥,使用对称加密处理数据。这也是https 采用的方式。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:35:21  更:2022-03-17 22:36:37 
 
开发: 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 5:38:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码