当前位置:网站首页>《现代密码学》学习笔记——第三章 分组密码
《现代密码学》学习笔记——第三章 分组密码
2022-08-11 05:19:00 【Unicorn_snow】
一、分组密码的设计思想
1.分组密码的定义
一个分组密码体制(P,K,C,E,D),其中P表示明文,K表示密钥,k表示出示密钥,C表示密文,E表示加密算法,D表示解密算法。有P=C={0,1}/;K={0,1}t,/表示分组长度,t表示密钥长度。加密变换:E:P×K→C,当k∈K确定时,Ek为P→C的一 一映射。解密变换:D:C×K→P,当k∈K确定时,Dk为C→P的一 一映射。Dk·Ek=1。
2.什么是AES
在前一个数据加密标准DES被攻破之后,美国标准技术研究所(NIST)征集的新的数据加密标准——高级数据加密标准(AES)。新算法AES的分组长度为128比特,支持可变密钥长度128、192、256比特。
3.分组密码算法设计思想
(1)迭代结构(乘积密码):
首先将密钥K编排成若干个子密钥{K1,K2,…,Kn},现有明文P和轮函数F,首先将明文P与密钥K1放进轮函数F做计算,再将计算后的结果同K2一起放入轮函数F做计算,按照此方法一直处理至第n次处理完的结果与Kn一同进轮函数做计算,得到的结果就是密文C。若果密码操作不是幂等的,那么可能多次迭代有可能提高密码体质的安全性。采用迭代结构的优点:软、硬件实现节省了代码(硬件)资源。
(2)混淆:明文/密钥和密文之间的关系复杂;扩散:明文/密钥的每一个比特都影响密文的每一个比特。
4.DES算法概述
(1)明文和密文分组长度为64比特。
(2)算法包含迭代加解密和密钥编排两部分。
(3)Feistel结构(加解密相似):加密和解密除密钥编排不同外,完全相同。
(4)密钥长度:56比特(DES的密钥空间是256),每7比特后为一个奇偶校验位(第8位),共64位。
(5)轮函数采用混淆和扩散的组合,共16轮。
5.AES算法概述
(1)明文分组长度(128比特)和密文分组(128比特/192比特/256比特)可变长度。
(2)SPN结构:轮函数包含代换层-置换层-密钥混合层。
(3)密钥长度:128比特(密钥空间是2128)。
(4)迭代10轮。
二、DES
1.Feistel结构
按照下述规则进行16次迭代,即1≤i≤16,
Li=Ri-1
Ri=Li-1 ⊕ f(Ri-1,Ki )
这里f是一个函数,称为轮函数,16个长度为48比特的子密钥Ki(1≤i≤16) 是由密钥k经密钥编排函数计算出来的。
2.密钥编排算法
PC-1:给定64比特密钥K,根据固定置换PC-1来处理K得到PC-1(K)=C0D0,其中C0和D0分别由最前和最后28比特组成。计算C i=LSi(Ci-1)和LSi(Di-1),且Ki=PC-2(CiDi),LSi表示循环左移两个或一个位置,具体就是说如果i=1,2,9,16就移动一个位置,否则就移动两个位置,PC-2是另一个固定的置换。
3.DES安全增强
Triple-DES
令E:K×M→M是一个分组密码,定义3E:K3×M→C,密钥长度=3*56=168bits(穷举攻击复杂度≈2118)
边栏推荐
- JS继承的几种方式及优缺点
- Flask framework to study: the debug and configuration items
- 山西省公安厅交管局发布雨天安全出行提示
- 【C语言从初阶到进阶】第一篇 初始C语言(一)
- C语言结构体详解 (2) 结构体内存对齐,默认对齐数
- Install different versions of MinGW (g++/gcc) and the configuration of the corresponding clion editor under Win
- 海外媒体发稿,要考虑到不同的民族文化特点
- [C language from elementary to advanced] Part 1 Initial C language (1)
- let 块级作用域
- LeetCode1166.设计文件系统
猜你喜欢
Error in render: “TypeError: Cannot read properties of undefined (reading ‘kingKongList‘)“
C语言——文件操作函数 fseek、ftell、rewind详解
旅游住宿酒店14页
Markdown编辑器
vscode插件
bootstarp作业一:制作分页器
生成用户的唯一标识(openId),并且加密
05-Nodejs中的模块加载机制
C语言动态内存分配(1)三种函数讲解
error: The following untracked working tree files would be overwritten by merge: .hbuilderx/launch
随机推荐
08-Express路由详解
Win下安装不同版本的MinGW(g++/gcc)以及对应clion编辑器的配置
gradle-wrapper.jar description
程序员小白的自我救赎之路。
表单input控件数据双向绑定
第4章 复合类型-2(指针)
C language version - advanced address book (file version)
05-Nodejs中的模块加载机制
Some Error in Visual Studio solution
vscode插件
扩展运算符和剩余参数rest
【C语言进阶】第一篇深度剖析整数数据在内存中的存储(一)
[C language from elementary to advanced] Part 1 Initial C language (1)
leetcode21. Merge two ordered linked lists
c指针学习(2)
Object.defineProperty新增/修改属性数据代理
C语言——程序的编译与执行、宏定义详解
国内自媒体宣发.多媒体发稿的优势
CSDN 社区内容创作规范
Introduction of several ways to initialize two-dimensional arrays in C language (private way to initialize large arrays)