11/6密码学 Des对称加密设计

对称加密是指加密和解密使用相同密钥的加密方式。Des算法把数据分成长度为64位的数据块,其中8位用作奇偶校,有效密钥长度为56位。它的加密过程包括初始置换、16轮迭代的乘积变换和逆初始置换这些复杂的步骤

举个简单的例子来理解对称加密,就好像你有一个带锁的盒子(代表加密算法),你用一把钥匙(密钥)把东西锁进去(加密),之后要用同一把钥匙才能把东西取出来(解密)。不过DES由于密钥长度相对较短,现在安全性有所下降,已经逐渐被AES等更安全的对称加密算法所替代,但它在密码学的发展历程中有很重要的地位。

1.算法分析

示例场景

假设我们要使用DES加密算法对消息“HELLO”进行加密,设定的密钥为“ABCDEFGH”(实际应用中密钥要复杂且保密得多哦)。

前期准备

• 数据处理:

• DES算法处理的数据单位是64位的分组。首先要把我们要加密的消息“HELLO”转换为二进制数据,并且按照64位为一组进行划分。这里就涉及到字符编码的知识啦,一般常用ASCII编码将字符转换为二进制。比如,“H”的ASCII码是72,转换为二进制就是01001000 。依次把“HELLO”每个字符都转换后,再拼接起来,假设得到的二进制数据是不足64位的(实际这个例子肯定不足啦),那还需要按照规则进行填充,使它达到64位。填充方式有多种,常见的是在末尾添加特定字符(如空格等)对应的二进制数据,直到达到64位。

• 密钥方面,同样要把“ABCDEFGH”转换为二进制数据,并且只取其有效的56位作为真正用于加密的密钥部分,另外8位是用于奇偶校验的,这里先不管校验的事儿,就重点关注那56位有效密钥哦。假设转换后得到了56位的密钥二进制数据。

加密过程

1. 初始置换(IP)

• 含义:这一步是对我们准备好的64位明文分组进行一次固定的位置置换。就好比有一个表格,规定了原来在某个位置的二进制位要换到新的位置上去。

• 示例“算数”:比如说,初始置换规则规定原来的第1位要换到第58位,第2位要换到第50位等等,按照这个规则把64位明文分组里的每一位都进行置换。假如我们之前得到的“HELLO”对应的64位明文分组是(这里简单示意一下,实际很长哦):0100100001000101010011000100110001001111 (假设经过填充后的哦),按照初始置换规则置换后就会变成另外一个样子的64位数据啦。

2. 16轮迭代的乘积变换

• 轮密钥生成:

• 在进行这16轮迭代之前,要先从我们之前准备好的56位有效密钥生成每一轮需要用到的子密钥。这也是有一套复杂的规则哦。大致过程是,先把56位密钥分成两部分,比如左边28位和右边28位,然后按照特定的旋转规则(比如每轮旋转一定的位数,这个旋转位数在每轮可能还不一样哦)对这两部分分别进行旋转操作,之后再从经过旋转后的两部分中选取特定的位组合成每一轮需要的48位子密钥。比如说,第一轮可能是从经过旋转后的两部分中选取第1到第48位组合成第一轮的子密钥;第二轮又会根据新的旋转和选取规则生成新的子密钥,就这样一轮一轮地生成,总共生成16轮所需的子密钥。

• 示例“算数”:假设56位有效密钥经过第一轮的旋转和选取规则后,生成的第一轮48位子密钥是(简单示意):10101010101010101010101010101010101010101010101010101010 (实际是根据复杂规则生成的啦)。

• 每轮迭代操作:

• 对于每一轮迭代,都要用当前轮生成的子密钥对经过初始置换后的明文分组进行操作。主要操作包括扩展置换、异或运算、S盒替换、P盒置换等。

• 扩展置换:就是把经过初始置换后的64位明文分组中的部分位按照一定规则扩展成更多的位,比如从32位扩展成48位。这就像是把原本集中在一起的一些二进制信息分散开,方便后续和子密钥进行操作。

• 异或运算:将扩展置换后的48位数据和当前轮的48位子密钥进行异或运算(异或运算就是相同为0,不同为1啦)。比如说,扩展置换后的48位数据是(简单示意):11111111111111111111111111111111111111111111111111111111 ,和第一轮的子密钥(上面假设的那个)进行异或运算后,得到新的48位数据(根据异或规则计算哦)。

• S盒替换:异或运算后的48位数据要进入S盒进行替换操作。S盒是DES算法中很重要的一个部分,它里面有8个小盒子(每个小盒子可以看成是一个函数哦),每个小盒子接收6位输入数据,然后输出4位数据。所以要把异或运算后的48位数据分成8组,每组6位,分别送入8个S盒中,每个S盒输出4位,这样就总共输出32位数据啦。

• P盒置换:S盒替换后得到的32位数据还要进行P盒置换,这又是一次按照固定规则对32位数据的位置进行重新排列,就像初始置换一样,只不过是针对32位数据啦。经过P盒置换后,就完成了一轮迭代的操作。

3. 逆初始置换(IP^-1)

• 含义:在经过16轮迭代后,得到的数据还要进行一次逆初始置换,就是把前面初始置换的操作反过来做一次,把经过16轮迭代后得到的64位数据的每一位按照逆初始置换规则再换回到原来的位置(当然是相对于初始置换前的那种相对位置啦)。

• 示例“算数”:假设经过16轮迭代后得到的64位数据是(简单示意):01010101010101010101010101010101010101010101010101010101 ,按照逆初始置换规则置换后,就得到了最终的密文啦,这个密文也是64位的二进制数据。

总结

通过以上一步步的操作,我们就完成了对“HELLO”这个消息的DES加密过程,从原始的消息转换为二进制、经过各种置换、运算和迭代,最终得到了密文。而解密过程就是把这些步骤反过来做,用同样的密钥,按照相反的顺序进行相应的操作,就可以还原出原始消息啦。

2.使用java语言实现DES对称加密

如果有写好的,放在评论区谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/465956.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元测试日志打印相关接口及类 Logger

LoggerFactory 简介 单元测试常用日志打印工具LoggerFactory。 LoggerFactory 代码结构 LoggerFactory 是 JUnit 平台中的一个类,用于创建 Logger 实例。它被设计用于提供日志记录功能,使得 JUnit 在执行测试时能够记录信息、警告、错误等。 LoggerFact…

【万字总结】数据结构常考应用大题做法画法详解_树_哈希表_图_排序大总结

文章目录 1.树相关应用大题1.1 已知二叉树的中序序列和前序or中序,画出二叉树1.2 二叉树的遍历、树的遍历、森林的遍历总结1.3二叉树与森林之间的转换1.3.1 已知树的先序序列和中序序列,画出森林 1.4 二叉树的线索化1.5 二叉排序树1.5.1 二叉排序树的删除…

越权访问漏洞

V2Board Admin.php 越权访问漏洞 ## 漏洞描述 V2board面板 Admin.php 存在越权访问漏洞,由于部分鉴权代码于v1.6.1版本进行了修改,鉴权方式变为从Redis中获取缓存判定是否存在可以调用… V2Board Admin.php 越权访问漏洞 漏洞描述 V2board面板 Admin.ph…

接口测试用例设计的关键步骤与技巧解析!

简介 接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特…

Redis常见面试题(二)

Redis性能优化 Redis性能测试 阿里Redis性能优化 使用批量操作减少网络传输 Redis命令执行步骤:1、发送命令;2、命令排队;3、命令执行;4、返回结果。其中 1 与 4 消耗时间 --> Round Trip Time(RTT,…

功能超全的客服快捷回复软件

客服日常工作繁忙,需要一款满足各项日常需求的客服工具,完成咨询的快捷回复,并能共享客服团队优质话术,实现云端文件储存,管理表情动图等功能 前言 客服日常工作繁忙,需要一款满足各项日常需求的客服工具。…

靠Python真的能实现经济自由,学会了你也可以

不知道大家有没有注意到,最近关注的很多人都在聊“副业and兼职”这件事。 毕竟单一收入已经不能满足现代人的需求了。 对于普通人来说,想要跳出固定思维和舒适圈,相比于孤注一掷的创业,更推荐兼职。 很多人想要创业,…

【案例分享】借助 iSpring,创造客户真正欣赏的专业在线培训体验

Safety Bee Training是一家领先的认证在线学习提供商,专门提供职业健康、安全和环境项目。它也是中东和亚洲唯一一家提供经 NASP 等国际认证机构认可的课程的培训提供商。它已经培训了超过 28,000 名学习者,并且正在不断扩大其课程范围,以提供…

IP可用端口扫描器工具(bun + typescript)

IP可用端口扫描器工具(bun typescript) 学习方式:源码学习。通过项目和源码可以学习到如下内容:1、bun搭建项目,打包项目2、net、dns等node内置模块的使用3、yargs、assert、progress、cli-color等三方包的使用ps&am…

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能&#xff…

软件开发项目管理:实现目标的实用指南

由于软件项目多数是复杂且难以预测的,对软件开发生命周期的深入了解、合适的框架以及强大的工作管理平台是必不可少的。项目管理系统在软件开发中通常以监督为首要任务,但优秀的项目计划、管理框架和软件工具可以使整个团队受益。 软件开发项目管理的主要…

外包干了2年,快要废了。。。

先说一下自己的情况,普通本科,在外包干了2年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会让一…

【青牛科技】GC8549替代LV8549/ONSEMI在摇头机、舞台灯、打印机和白色家电等产品上的应用分析

引言 在现代电子产品中,控制芯片的性能直接影响到设备的功能和用户体验。摇头机、舞台灯、打印机和白色家电等领域对控制精度、功耗和成本等方面的要求日益提高。LV8549/ONSEMI等国际品牌的芯片曾是这些产品的主要选择,但随着国内半导体技术的进步&…

Spring挖掘:(AOP篇)

学习AOP时,我们首先来了解一下何为AOP 一. 概念 AOP(面向切面编程,Aspect Oriented Programming)是一种编程技术,旨在通过预编译方式或运行期动态代理实现程序功能的统一管理和增强。AOP的主要目标是在不改变原有业务逻辑代码的…

Centos Linux 7 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放 2. 一个域名,最好是com cn org的一级域名 3. 域名备案&am…

深入了解Bootstrap框架:从入门到精通

文章目录 前言Bootstrap的核心特性1. 响应式设计2. 丰富的组件库3. 易于使用4. 良好的兼容性 安装与使用安装1. 通过CDN引入2. 下载源码3. 使用npm或yarn 基本使用1. 栅格系统2. 按钮3. 导航条4. 卡片5. 模态框6. 轮播图7. 表单 高级定制1. 修改 Sass 变量2. 按需引入组件 最佳…

ENSP RIP动态路由

RIP(距离矢量路由协议)以网络中所有链路的距离和矢量为依据计算最佳路径,是第一个动态路由协议。条数作为唯一的度量单位。默认开启水平分割(从一个路由接口学到的路由信息,便不在从这个接口发送出去)防止路…

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)

华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目分享——共九套(每套四十题) 岗位——芯片与器件设计工程师 岗位意向——模拟芯片 真题题目分享,完整题目,无答案(共8套) 实习岗位…

MySQL45讲 第十一讲 怎么给字符串字段加索引?

文章目录 MySQL45讲 第十一讲 怎么给字符串字段加索引?一、引言二、前缀索引(一)概念与创建方式(二)数据结构与存储差异(三)确定前缀长度的方法 三、前缀索引对覆盖索引的影响四、其他索引创建方…

字节青训-小S的倒排索引

问题描述 小S正在帮助她的朋友们建立一个搜索引擎。为了让用户能够更快地找到他们感兴趣的帖子,小S决定使用倒排索引。倒排索引的工作原理是:每个单词都会关联一个帖子ID的列表,这些帖子包含该单词,且ID按从小到大的顺序排列。 例…