当前位置:网站首页>数据加密标准(DES)概念及工作原理
数据加密标准(DES)概念及工作原理
2022-06-26 17:45:00 【lmn_】

0x01 数据加密标准DES介绍
数据加密标准(Data Encryption Standard)(DES)是一种用于加密数字数据的对称密钥算法。密钥长度为56位,安全性不强,但它在密码学的进步中具有很大的影响力。
0x02 数据加密标准历史
数据加密标准DES于1970年代初在IBM开发,是由美国的国家标准局(NBS,即现在的国家标准与技术会NIST)开启,在1972年时,当时美国国家标准局对美国政府计算机安全的研究发现需要一个政府范围的标准来加密未分类的敏感信息。
基于Horst Feistel的早期设计,应国家标准局(NBS)的邀请提交给保护敏感、非机密电子政府数据的候选者。

1973年,NBS 征求了符合严格设计标准的密码方案,但还没有达到要求。1974年,IBM提交了 1973-1974 年间基于早期算法Horst Feistel的Lucifer密码开发的密码。
DES 在 1976 年 11 月被批准为联邦标准,在与国家安全局(NSA) 协商后,NBS选择了一个稍微修改过的版本(加强了针对差分密码分析,但削弱了针对暴力攻击),作为官方的联邦信息处理标准(FIPS)发布1977 年的美国。
0x03 数据加密标准DES工作原理
数据加密标准DES是块加密算法,它采用固定长度的明文位串,按64位块长度分块进行加密数据,算法通过把数据分为以64为单位的块,把64位明文作为DES的输入,产生64位密文输出。
DES为对称加密算法,也就是加密与解密使用相同的算法和密钥。
密钥表面上由 64 位组成,实际使用了其中的 56 位,8位仅用于检查奇偶性之后被丢弃。
与其他分组密码一样,DES 本身并不是一种安全的加密方式,而是必须在一种操作模式下使用。解密使用与加密相同的结构,但使用的密钥顺序相反。

通过上图可以看出,一共经历了 16 次相同的阶段,也称为称为轮次。在开始之前,先通过IP,就是将64位分为两个32位,并交替处理。Feistel 结构确保解密和加密是非常相似的过程——唯一的区别是子密钥在解密时以相反的顺序应用,算法的其余部分是相同的,简化了繁杂的实现过程。
图片中⊕符号表示异或(XOR)
F 函数将半个块与一些密钥一起打乱。然后将 F 函数的输出与块的另一半组合,并在下一轮之前交换两半。最后一轮结束后,交换两半;这是Feistel结构的一个特点,它使加密和解密过程相似。
Feistel (F) 函数
- 扩展:使用扩展置换,通过复制一半位,将 32 位半块扩展为 48 位。输出由 8 个 6 位(8 × 6 = 48 位)片段组成,每个片段包含 4 个相应输入位的副本,以及从每个输入片段到任一侧的紧邻位的副本。
- 键混合:使用⊕(XOR)操作将结果与子键组合。16 个 48 位子密钥(每轮一个)是使用密钥调度从主密钥派生的。
- 替换:在子密钥中混合后,块在被S盒或替换盒处理之前被分成 8 个 6 位块。根据以查找表形式提供的非线性变换,8个S盒中的每一个都将其6个输入位替换为4个输出位。
S-box 提供了 DES 安全性的核心——没有它们,密码将是线性的,并且很容易被破解。 - 排列:最后,来自 S-box 的 32 个输出根据固定排列P-box重新排列。在排列之后,本轮中每个 S-box 输出的比特在下一轮中分布在四个不同的 S-box 中。
S-box(substitution box)也叫“密码置换盒”,用于提高安全系数
References: https://en.wikipedia.org/
边栏推荐
- 解决pycharm里面每个字母占一格空格的问题
- wechat_微信小程序中解决navigator进行页面跳转并传递参数问题
- Redis and database data consistency
- Notes on flowus
- Necessary decorator mode for 3 years' work
- Vscode usage - Remote SSH configuration description
- Here comes the hero League full skin Downloader
- Romance of the Three Kingdoms: responsibility chain model
- 【万字总结】以终为始,详细分析高考志愿该怎么填
- 你好,现在网上股票开户买股票安全吗?
猜你喜欢

sparksql如何通过日期返回具体周几-dayofweek函数

No manual prior is required! HKU & Tongji & lunarai & Kuangshi proposed self supervised visual representation learning based on semantic grouping, which significantly improved the tasks of target dete

玩轉Linux,輕松安裝配置MySQL

让torch.cuda.is_available()从false变成true的一点经验

In those years, interview the abused red and black trees

Basic requirements: 7 problems in singleton mode

wechat_微信小程序中解决navigator进行页面跳转并传递参数问题

Platform management background and merchant menu resource management: Design of platform management background data service

Byte interview: two array interview questions, please accept

并发之Synchronized说明
随机推荐
Halcon's region: features of multiple regions (5)
Platform management background and merchant menu resource management: Design of platform management background data service
Programmer's essential toolkit, please collect!
What does the equals method compare? Who told you
牛客网:设计LRU缓存结构 设计LFU缓存结构
[qt learning notes]qt inter thread data communication and data sharing
QPushButton 样式使用示例(以及按钮setmenu添加下拉菜单的方法)
How about opening an account at Guojin securities? Is it safe?
[recommendation system learning] technology stack of recommendation system
Knapsack problem with dependency
Cloud native 02: Alibaba cloud cloud efficient flow pipeline
SIGIR 2022 | University of Hong Kong and others proposed the application of hypergraph comparative learning in Recommendation System
When I was in the library, I thought of the yuan sharing mode
VSCode使用 - Remote-SSH 配置说明
10 cloud security best practices that enterprises need to know
玩轉Linux,輕松安裝配置MySQL
vue--vuerouter缓存路由组件
二分查找法-1
Leetcode HOT100 (22--- bracket generation)
[recommendation system learning] recommendation system architecture