本文只关注一个核心任务 —— 如何把 64 位的明文,用 64 位的密钥,加密成 64 位的密文,并执行解密,需要理解这个过程。

DES已经很少使用了,主要是想学习它的Feistel network (费斯妥网络)。

其实,了解这些加密的流程没啥用,这些是无用的信息。我认为要理解每个步骤背后的数学原理,数学观点上证明它这个步骤是安全的,这个才是通用的、有用的知识。

一些基础概念

对称加密

双方拥有同一个密钥,加密、解密是同一个密钥完成,该秘钥不对第三方公开。

分组密码

分组密码是将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。

分组长度

DES 加密算法中,明文和密文为 64 位分组。密钥的长度为 64 位,但是密钥的每个第八位设置为奇偶校验位,因此密钥的实际长度为56位。

时序图

DES 算法是在 Feistel network (费斯妥网络)的基础上执行的。以下是 DES 算法的流程图:

TODO...

步骤拆分

DES 加密流程大致分为 4 个步骤:

(1)初始置换

(2)生成子密钥

(3)迭代过程

(4)逆置换

步骤挺长,每个步骤问AI吧。

Reference

DES算法原理及实现

https://www.ruanx.net/des/

对称分组加密—DES算法原理的更多相关文章

  1. Asp.Net 常用工具类之加密——对称加密DES算法(2)

    又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...

  2. DES算法原理完整版

    1.所需参数 key:8个字节共64位的工作密钥 data:8个字节共64位的需要被加密或被解密的数据 mode:DES工作方式,加密或者解密 2.初始置换 DES算法使用64位的密钥key将64位的 ...

  3. 对称加密算法之DES算法

    数据加密标准(data encryption standard): DES是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位. DES对64位的明文分组进行操作.通过一个初始置换 ...

  4. 数据加密算法--详解DES加密算法原理与实现

    DES算法简介 DES(Data Encryption Standard)是目前最为流行的加密算法之一.DES是对称的,也就是说它使用同一个密钥来加密和解密数据. DES还是一种分组加密算法,该算法每 ...

  5. DES算法与四种加密模式的代码实现(C++语言)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Love_Irelia97/article/ ...

  6. MD5 不可逆加密,Des对称可逆加密 ,RSA非对称可逆加密 ,数字证书 SSL

    :MD5 不可逆加密2:Des对称可逆加密3:RSA非对称可逆加密4:数字证书 SSL Anker_张(博客园)http://www.cnblogs.com/AnkerZhang/ 1:MD5 不可逆 ...

  7. 使用DES算法实现加密解密

    使用DES算法实现加密解密 我们常见的加密算法有DES.MD5.IDEA.AES等等,这篇随笔介绍使用DES算法实现加密解密 首先介绍一下DES算法: DES算法为密码体制中的对称密码体制,又被称为美 ...

  8. 对称加密DES和TripleDES

    一.  对称加密 对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码).因此,通信双方都必 ...

  9. 【Android工具】DES终结者加密时报——AES加密演算法

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...

  10. DES加密算法应用:分组加密模式

    通常,大多数的分组加密算法都是把数据按照64位分组的方式进行加密和解密.但是几乎所有的加密工作所涉及的数据量都远远大于64位,因此就需要不断地重复加密过程,直到处理完所有的分组.这种分组加密中所涉及的 ...

随机推荐

  1. Visual Studio 2017 导出 ASP.NET Core 项目模版项目文件为空

    问题重现 VS 2017 针对 ASP.NET Core 导出模版功能有问题 解决办法 visual-studio-2017-templates-and-the-missing-content 目前官 ...

  2. java基础之File、流

    一.File类 我们可以使用File类的方法 创建一个文件/文件夹 删除文件/文件夹 获取文件/文件夹 判断文件/文件夹是否存在 对文件夹进行遍历 获取文件的大小 构造方法: 1.public Fil ...

  3. 如何处理 MySQL 的主从同步延迟?

    如何处理 MySQL 的主从同步延迟? MySQL 的主从同步延迟通常是由主库与从库之间的网络延迟.从库的处理能力.主库的写操作量等因素导致的.长时间的同步延迟可能会影响系统的稳定性和数据一致性.以下 ...

  4. 小程序组件使用全局样式app.wxss

    Component({ options: { addGlobalClass: true } })

  5. centos停服,迁移centos7.3系统到新搭建的openEuler

    背景 最近在做的事,简单来讲,就是一套系统差不多有10多台虚拟机,都是centos系统,版本主要是7.3.7.6.7.9,现在centos停止维护了,转为了centos stream,而centos ...

  6. html中的em和rem到底该如何使用,自适应效果中如何确定文字大小/字号?

    如今手机屏幕繁多,自适应效果中如何确定文字大小/字号? em rem vm vw vh你都了解吗? 先说说em和rem em:继承父级的,假设html的font-size默认为16px,body字体大 ...

  7. Maven依赖冲突解决方案:调解规则与工具实践

    结论先行 Maven解决依赖冲突的核心机制是 依赖调解 和 显式排除 ,并通过插件(如maven-dependency-plugin.maven-enforcer-plugin和Maven Helpe ...

  8. gfast工作流2.0发布

    Gfast 是基于 GF (Go Frame) 的后台管理系统,此次为丰富 Gfast 生态而增加工作流,经过长时间的精心研发和严格测试,全新 Gfast 工作流版本现已正式发布! 流程亮点: 1.支 ...

  9. 鸿蒙NEXT开发实战教程—文字识别

    今天跟大家分享一个ocr文字识别的小项目: 鸿蒙系统提供了文字识别的能力,支持简体中文.英文.日文.韩文.繁体中文五种语言.实现步骤为初始化文字识别服务.将图片转换为PixelMap.文字识别.释放O ...

  10. vue3 基础-Pinia 可能替代 Vuex 的全局数据状态管理

    Pinia 初体验 Pinia.js是由Vue.js团队核心成员开发的新一代状态管理器,使用Composition Api进行重新设计的,也被视为下一代Vuex. Pinia是一个Vue的状态管理库, ...