信息安全复习五:数据加密标准(DES)
一、本章梗概
1.主要内容:分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES
2.思考问题:
①按照明文被处理的形式,DES属于标准的分组密码
②根据密钥的使用数量,DES属于标准的对称密码
3.内容回顾:
①什么是对称密钥密码模型
②流密码与分组密码的区别
相同点:都是对称密码模型
不同点:分组密码主要用于商业密码,流密码主要用于军用密码;分组密码主要是进行替代和置换,流密码主要是用于异或运算。
二、分组密码
2.1 分组密码的加密方式
分组密码的加密方式:首先将明文序列以固定长度进行分组,每组明文用相同的密钥和算法进行变换,得到一组密文。
分组密码是以块为单位,在密钥的控制下进行一系列线性和非线性交换而得到密文的。
2.2 分组密码的特点
分组密码的加/解密运算目的:输出块中的每一比特位是由 输入+密钥 每一比特位决定的。
加密算法中使用的方法:乘积密码 (包含替代、置换)、XOR(异或)
这个设计思想就是Shannono 1949年发现的隐藏信息的两种技术:混淆和扩散。(可以避免统计方法的密码分析)
2.3 混淆和扩散
分组密码(一) --密码学复习(四)
混淆:
不同的输入,导致相同的输出;
就是改变数据块,使输出位与输入位之间没有明显的统计关系(替代技术实现)
使密文和密钥之间的统计关系变得尽可能复杂,以使敌手无法得到密钥
扩散:
输入数据中1bit的变化,将导致输出结果中的多bit变化;
就是通过密钥位转移到密文的其它位上(置换技术实现)
将明文的统计特性分布到密文中去
使明文和密文之间的统计关系变得尽可能复杂,以使敌手无法得到密钥。
处理长明文块时,需要多个替代模块,各个替代模块之间没有关联。
实现方式是使得明文的每一位影响密文中多位的值,等价于说密文中每一位均受明文中多位影响。这时明文的统计特性将被散布到密文中。
分组密码的特点:良好的扩散性;对插入信息的敏感性,较强的适应性;加/解密速度慢;差错的扩散和传播;
2.4 替代与置换
1.替代


2.置换:交换各数据位的位置

通过对包含密钥的数据进行替代和置换,可以获得混杂的数据,可以当作密钥流,加密明文数据。
2.5 Feistel结构
基于Shannon理论(混淆和扩散)的大多数对称分组密码的基本结构–Feistel网络结构。
Feistel 的优点在于:由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。这就使得在实施的过程中,对编码量和线路传输的要求就减少了几乎一半。
Feistel结构的简单理解:
1.给明文分组(L,R)
2.对R进行加密
3.密文=加密后的R+L(即LR的位置交换)
构造过程:


解密过程:

Feistel密码结构
三、DES算法
3.1.简单介绍
DES算法原理及实现
1.常见的加密算法
对称密钥/私钥密钥:DES、RC6、AES(Rijndael)
非对称秘钥/公钥密钥:RSA
单向散列函数:MD5、SHA
2.几个重要的历史时间
1973年NBS向社会公开征集加密算法,以制定加密算法标准
1974年第二次征集
1975年选中IBM的算法,并公布征求意见
1977年1月15日正式颁布
1998年底以后停用
1999年颁布3DES为新标准
3.DES的设计目的
1.用于加密保护政府机构和商业部门的非机密的敏感数据。
2.用于加密保护静态存储和传输信道中的数据。
3.安全使用10~15年。
4.DES概况
应用:
1.许多国际组织采用位标准。
2.在全世界范围得到广泛应用。
3.产品形式:软件(嵌入式,应用软件),硬件(单片,插片)
结论:
用于其设计目标是安全的。
设计精巧,实现容易,使用方便,堪称典范。
为国际信息安全发挥了重要作用。
5.DES 是一种 对称密钥 的 块加密 算法。
谓之 “对称密钥”,是因为加密、解密用的密钥是一样的。
谓之 “块加密”,是因为这种算法把明文划分为很多个等长的块(block),对每个块进行加密,最后以某种手段拼在一起。“块加密” 亦称 “分组加密”。
6.DES算法入口参数
DES 算法的入口参数有三个:Key、Data、Mode。
其中,Key 为 7 个字节共 56 位,是 DES 算法的工作 密钥;
Data 为 8 个字节 64 位,是要被加密或被解密的 数据;
Mode 为 DES 的 工作方式,有两种:加密或解密。
3.2 DES的整体特点
1.分组密码:明文、密文和密钥的分组长度都是64位。
2.面向二进制的密码算法:因而能够加解密任何形式的计算机数据。
3.对合运算:因而加密和解密共用同一算法,使工程实现的工作量减半。
4.综合运用了置换、代替、代数等多种密码技术。
5.基本结构属于Feistel结构。
3.3 DES算法框图和加密过程
DES 算法是在 Feistel network (费斯妥网络)的基础上执行的。以下是 DES 算法的流程图:

可以看到整个算法分为两大部分——迭代加密(左边的 16 轮迭代操作),以及 子密钥生成(右边生成子密钥的算法)。
3.4 DES子密钥的产生
【密码学】DES 介绍
3.5 初始置换和逆置换的保密意义
保密作用不大,在IP和IP^(-1)公开的条件下,其保密意义不大
3.6 DES解密过程
DES的运算是对合运算,加解密可共用同一个运算。
不同点:子密钥使用的顺序不同。
第一次解密迭代使用子密钥K16,第二次解密迭代使用子密钥K15,第十六次解密迭代使用子密钥K1。
3.7 加密函数f



3.8 DES的安全性
1.攻击:穷举攻击(目前最有效的方法),差分攻击,线性攻击。
2.安全弱点:密钥太短,存在弱密钥,存在互补对称性。

3.9 3重DES
1.美国NIST在1999年发布了一个新版本的DES标准
DES只用于遗留系统
3DES取代DES成为新标准
国际组织和我国都接受3DES
2.3DES的优势
3密钥的3DES:密钥长度是168位。
2密钥的3DES:密钥长度是112位。
安全:密钥足够长,经过最充分的分析和实践检验。
兼容性好。
3.3DES的弱势
速度慢
4.DES的历史回顾
DES的出现标志着商业密码需求的增加。
DES体现香农的密码设计理论。
体现了公开设计原则,开创公开算法的先例。
DES代表当时商业密码的最高水平。
5.DES给我们的启示
商业密码应当坚持公开设计原则;
商业密码标准的设计应有广大用户的参与,商业密码标准应当公布算法。
附加1:
在密码学中,加密算法分为双向加密和单向加密。
单向加密包括MD5、SHA等摘要算法,它们是不可逆的。(哈希函数可逆)
双向加密包括对称加密和非对称加密,对称加密包括AES加密、DES加密等。双向加密是可逆的,存在密文的密钥。
附加2:
什么是AES加密?详解AES加密算法原理流程
相关文章:
信息安全复习五:数据加密标准(DES)
一、本章梗概 1.主要内容:分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题: ①按照明文被处理的形式,DES属于标准的分组密码 ②根据密钥的使用数量,DES属于标准的对称密码 3.内容回顾: …...
Java ---包装类
(一)包装类概念 官方说法: Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象…...
Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...
MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别
问题描述 MSVC(Microsoft Visual C) 中运行库的链接方式MD和MT的区别 问题解答 在MSVC编译器中,运行库(Runtime Library)有两种链接方式:MD(Multithread-DLL)和MT(Multithread)。这两种链接方式的主要区…...
设计模式之解释器模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…...
基于MATLAB编程的粒子群算法优化BP神经网络风电功率预测,基于PSO-BP的风电功率预测
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的风电功率 matlab代码 代写下载链接:https://download.csdn.net/download/a…...
开心档之C++ 字符串
C 字符串 目录 C 字符串 C 风格字符串 实例 实例 C 中的 String 类 实例 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 …...
Java Collection源码分析(JDk corretto 11)
文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种:Arrays工具类System类 LinkedList实现类t…...
13种权重的计算方法
权重计算方法有很多种,不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外,还有一些与权重计算相关的方法,今天一文总结了13种与权重计算相关的方法,大家可以对比选择使用。 一、…...
Devops和Gitops区别
一. 什么是devops DevOps 是一种开发(Dev)和运维(Ops)之间协作和沟通的文化、流程和工具的实践方法。它强调迭代、快速交付和持续集成/持续交付,旨在加速软件交付的速度、质量和稳定性。 DevOps 的核心目标是通过自动…...
拿下多家车企定点!4D毫米波雷达「域」系统首发出道
从1R、2R、3R到整车360感知方案,毫米波雷达的前装市场需求量依然保持着快速增长的态势。 高工智能汽车研究院监测数据显示,2022年中国市场(不含进出口)前装标配搭载ADAS毫米波雷达(前向后向盲区)交付1795.…...
【FATE联邦学习】FATE联邦学习使用GPU、指定cuda下标
问题 FATE框架1.x支持GPU训练吗? 寻找 先看了官网,搜官网,发现还是有的。 打开第一个后,里面可以用training param指定各个client的训练GPU,但是好像都是在large language model的。 而在文档中搜寻到的gpu…...
英文数字表达
1基数词 0 nought;zero;O 1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 9 nine 10 ten 11 eleven 12 twelve 13 thirteen 14 fourteen 15 fifteen 16 sixteen 17 seventeen 18 eighteen 19 nineteen 20 twenty21 twenty-one 22 twenty-two 23 twenty-three 30 th…...
第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第125讲。 第11届蓝桥杯省赛,这是2020年6月21日举办的省赛Scratch考试真题,原定于2020年3月7日…...
部署LVS-NAT群集实验
一、 实验准备 负载调度器:内网关 ens33:192.168.109.12,外网关 ens37:12.0.0.1外网 Web节点服务器1:192.168.109.13 Web节点服务器2:192.168.109.14 NFS服务器:192.168.109.11 客户端…...
对待工作的九个级别
只要是职场人,每天都要开展本职工作,有的人在职场上混得风生水起、平步青云,有的人却总是在原地踏步踏,总有一种怀才不遇的感叹,为什么呢?其实,差距就在于对待工作的态度上。 今天我们一起与各位…...
第四章 存储结构与管理硬盘
第四章 存储结构与管理硬盘 一、一切从“/”开始 1、Linux系统中常见的目录名称以及相应内容 目录名称应放置文件的内容/boot开机所需文件——内核、开机菜单以及所需配置文件等/dev以文件形式存放任何设备与接口/etc配置文件/home用户主目录/bin存放单用户模式下还可以操作…...
【腾讯云-2】极简搭建边缘集群
1 创建 流程和https://blog.csdn.net/qq_47058489/article/details/130347795差不多,可参考 查看基本信息: 创建边缘集群的过程中会初始化master,说明包含一个托管master节点 但是没有其他节点 2 开启节点远程登录 通过 SSH 的方式远…...
在springboot中给mybatis加拦截器
拦截器的作用就是我们可以拦截某些方法的调用,在目标方法前后加上我们自己逻辑 Mybatis拦截器设计的一个初衷是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis固有的逻辑。 mybatis 自定义拦截器 1、实现Interceptor 接口,并添加拦截注解 I…...
[oeasy]python0139_尝试捕获异常_ try_except_traceback
尝试捕获异常 回忆上次内容 变量相加 整型数字变量可以相加字符串变量也可以拼接 但是 字符串 和 整型数字整型数字 和 字符串不能相加 怎么办? 转格式int(“1”)str(2) 可是 如果输入的苹果数量是 字符串"abc" int(“abc”)会发生什么?&…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
