des加密算法最简单的解释(更简单,大白话,读完就理解)

这篇具有很好参考价值的文章主要介绍了des加密算法最简单的解释(更简单,大白话,读完就理解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        

目录

1、几个基本概念

第一个置换是:初始置换-终止置换-IP置换-初始置换IP

第二个置换:扩展置换(32位到48位)

第三个置换:压缩置换(S盒48位到32位)

第四个运算:循环左移(位数不变)

第五个置换:置换选择pc-1(64位到56位)

第六个置换:压缩置换pc-2(56位到48位)

第七个运算:F变换

第八个置换:P-盒置换(48bit到32bit)

第九个置换:逆置换

2、子密钥生成过程

3、des加密过程(迭代)

4、子密钥算法的流程图

5、加密算法流程图


        CSDN上看了很多文章,但是我感觉写的太过专业化,很多时候读起来很费力气,明明是简单的过程,但是经过复杂的说法,很难使人一读就懂。经过深入的思考,以及算法报告是对学生理解能力的考核,我认为加密算法这么写更易懂,同样体现了对这个知识点的学习和思考:那么开始吧,首先我们要明白几个置换过程,这个和加密算法无关,你只需要明白这个置换即可。

1、几个基本概念

第一个置换是:初始置换-终止置换-IP置换-初始置换IP

虽然我写了四个置换,是因为很多专业的人用了不同的称呼,但他们的方法都是一样的原来是64位的,置换后依然是64位的,所以看到这三个,你就想着这是把原数据打乱了,怎么置换呢,首先按照需要加密双方的约定指定一张表,这张表写着64位数字,代表着咱们要加密的64位原文,比如我和另一个要给他发消息的人约定了如下表格:

58,50,42,34,26,18,10,2,

60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,

64,56,48,40,32,24,16,8,

57,49,41,33,25,17, 9,1,

59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,

63,55,47,39,31,23,15,7,

我们有64位数据,此时将输入的64位明文的第1位置换到第40位,第2位置换到第8位,第3位置换到第48位。以此类推,最后一位是原来的第7位。置换规则是规定的。

此时我将得到经过置换的64位数据。

第二个置换:扩展置换(32位到48位)

这个32位怎么来的不用管,先理解怎么置换的,我把这32位数据分为8组,每组我就有4个,如下:

des加密算法最简单的解释(更简单,大白话,读完就理解)

每组的4位,我们规定让他用一种方法变成6位,怎么变呢?

把每组的最后一个数字补到前一组的开头,像拉火车一样,车尾接车头,形成如下的48位数据:

des加密算法最简单的解释(更简单,大白话,读完就理解)

第三个置换:压缩置换(S盒48位到32位)

同样48位怎么来的,先不管,看看置换方法:

我和那个人收我消息的人规定的另一张表是用在这的,这表我俩称之为S盒,而且我俩一起做了8张,每张有4行16列,共64个方框。

我们将要压缩的48位分为8组,每组6位,这6位二进制数,掐头去尾,将拿出来的这两个数组成一个新的数字,转为十进制,作为我和那个人规定的S盒这张表的行数。中间的四个数字转为十进制,作为列数。行列确定了表中的一个加密数字。当然四个二进制数最大的是1111,就是十进制15,所以我俩规定的这张表有重复数字,但是最大数字是15。这样6位数字,变成了表中的一个数字,且它最大是1111,共计8组,6*8变成了4*8。

第四个运算:循环左移(位数不变)

左移比较简单,就是循环左移,头尾相接,进行移动,但我俩规定第一次左移要移动一个位置,其中第一次、第二次、第九次、第十六次是循环左移一位,其他都是左移两位。

第五个置换:置换选择pc-1(64位到56位)

置换选择就是置换后,选择一种方式读取。我俩还有张表,叫这个名字--缩小选择换位表1(置换选择表1)。

将64位数据,分为8组,每组8个,是不是这样的:

des加密算法最简单的解释(更简单,大白话,读完就理解)

表里有64个数据,但是最后一位我们不要,前七位留着,但不是按照正常的方式读取,现在我们从下到上读取,读取的过程中,我们给他分为两组,C0和D0,C0是左边蓝色的部分,拿走28位,D0不仅从下往上,还要从右往左,再拿走28位。

第六个置换:压缩置换pc-2(56位到48位)

这次的表你猜对了,还是我们规定的,同样的压缩,但这是表2。位数不同,所以方法不同,因为这部分会用在子密钥上,所以加了个pc。

des加密算法最简单的解释(更简单,大白话,读完就理解)

这次我们规定上图表中的56位数据,第9182225353843548位被剔除了,这样就压缩到了48位。

第七个运算:F变换

F变换是一个运算流程的统称,这是过程是将32位数据扩展置换到48位,这48位与pc-2置换后的48位进行异或运算(异或运算两个数相同结果为0,不同为1),经过F变换后,还是48位数据。

第八个置换:P-盒置换(48bit到32bit)

S-盒代替运算,每一盒得到4位,8盒共得到32位输出。这32位输出作为P盒置换的输入块。P盒置换将每一位输入位映射到输出位。任何一位都不能被映射两次,也不能被略去。经过P-盒置换的结果与最初64位分组的左半部分异或,然后左右两部分交换,开始下一轮迭代。

P-盒置换表(表示数据的位置)共32位。将32位的输入的第16位放在第一位,第七位放在第二位,第二十位放在第三位,以此类推。如下:

16

7

20

21

29

12

28

17

1

15

23

26

5

18

31

10

2

8

24

14

32

27

3

9

19

13

30

6

22

11

4

25

第九个置换:逆置换

将初始置换进行16次的迭代,即进行16层的加密变换,这个运算过程我们暂时称为函数f。得到L16和R16,将此作为输入块,进行逆置换得到最终的密文输出块。逆置换是初始置换的逆运算。从初始置换规则中可以看到,原始数据的第1位置换到了第40位,第2位置换到了第8位。则逆置换就是将第40位置换到第1位,第8位置换到第2位。以此类推,逆置换规则如下。

40

8

48

16

56

24

64

32

39

7

47

15

55

23

63

31

38

6

46

14

54

22

62

30

37

5

45

13

53

21

61

29

36

4

44

12

52

20

60

28

35

3

43

11

51

19

59

27

34

2

42

10

50

18

58 26

33

1

41

9

49

17

57

25

注:DES算法的加密密钥是根据用户输入的秘钥生成的,该算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位.所以实际中使用的秘钥有效位是56位。秘钥共64位,每次置换都不考虑每字节的第8位,因为这一位是奇偶校验位,所以64位秘钥的第8、16、24、32、40、48、56、64位在计算秘钥时均忽略。

2、子密钥生成过程

明文64-> 初始置换 -> pc-1置换选择(56bit -> 分组C0D0(每组28bit->两组都循环左移 ->  pc-2压缩置换(48bit),生成了子密钥key148bit

由于我们需要16轮变换,也称之为“轮操作”。这个k1要和R0做异或运算,即F变换。得到的48位结果进入S1盒压缩处理,为32位,和L0交换顺序后的64位密文,是我们下一次循环pc-1置换选择的初始值。

根据轮数,将Cn和Dn分别循环左移1位或2位。

循环左移每轮移动的位数如下:

des加密算法最简单的解释(更简单,大白话,读完就理解)

3、des加密过程(迭代)

明文64->初始置换-> 分组 ->  S盒压缩处理(16) ->  逆初始置换IP-1-> 密文

比如我有一句话要传送给收件人 I love youyy

首先使用ascii(电脑编码系统),进入计算机后为二进制,如图:

des加密算法最简单的解释(更简单,大白话,读完就理解)

存入计算机为:0110 1001i     0010 0001(空格)     0110 1100l    0110 1111o   0111 0110v    0110 0101e     0010 1100(逗号)     0111 1001y    0111 1001y

(这里没有考虑数据类型,比如一般int4个字节,以及物理层传输时的比特流的编码)

共计9个字符。每个1字节,即8位,共计72位,此时,我们将数据分为多组,每组64位,即我们只要前64位来演示des加密后的密文。目前我们有64bit的明文。

         64bit的明文首先要按照表3-2进行IP置换,即原始数据的58位放在新数据的第1位,原始数据的第50位放在新数据第2位,以此类推。得到新的64bit数据分成L0 R0 左右两部分,每部分为32bit

des加密算法最简单的解释(更简单,大白话,读完就理解)

首先对原始数据整理一下

序号 1

0110  1001i                          

2

0010  0001(空格)

3

0110  1100l

4

0110  1111o

5

0111  0110v

6

0110  0101e

7

0010  1100(逗号)

8

0111 1001y

(好多啊,好麻烦吖,开始考虑这项任务有没有必要了)

这里只置换两行举例:

序号 1

1011  1101            

2

1001  0000

由此我们得到置换后的64bit数据。

将此分为L032bit)和R032bit),R0与秘钥结合(异或运算)后,进行S1盒压缩处理,处理后的数据为32位继续作为R0,与秘钥结合,而原来的R0赋值给L0,即:原来的右半部分成为新的左半部分。用式子表示如下:

Ln = R(n - 1);(不存在R负1)

Rn = L(n - 1)⊕f(Rn-1,kn-1)

[⊕:异或运算  Kn是向第N层输入的48位的秘钥,f是以Rn-1和Kn为变量的输出32位的函数]

如此16轮后,数据依然是64bit,而右半部分的R0由几步运算构成:扩展置换(32bit->48bit);秘钥置换(Kn的生成,n=0~16);S-盒压缩处理替代;P-盒置换,最后还有交换和逆置换,完成输入密文的任务。

4、子密钥算法的流程图

des加密算法最简单的解释(更简单,大白话,读完就理解)

5、加密算法流程图

des加密算法最简单的解释(更简单,大白话,读完就理解)文章来源地址https://www.toymoban.com/news/detail-474725.html

到了这里,关于des加密算法最简单的解释(更简单,大白话,读完就理解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大白话解析LevelDB: VersionSet

    在 LevelDB 中, VersionSet 类是一个关键的内部组件,负责管理数据库的不同版本。这个类跟踪了所有的 SSTables(排序字符串表)和它们在数据库中的布局。每次对数据库进行修改时(如添加、删除数据),LevelDB 会创建一个新的 Version 对象,这个对象由 VersionSet 管理。 VersionSe

    2024年01月19日
    浏览(33)
  • 用大白话举例子讲明白云计算

    前几天王坚院士在2023云栖大会上发表了关于云计算的演讲,听得我是热血沸腾,王院士称AI和云计算的结合是“云计算的第三次浪潮”,对此我深表认同。但是身边的很多朋友还不知道云计算是什么意思,有些人还认为百度云和百度云盘是一个东西,下面我用大白话举例说明

    2024年02月04日
    浏览(40)
  • 大白话聊聊“深度学习”和“大模型”

    1950年图灵发表论文《计算机器与智能》( Computing Machinery and Intelligence),提出了“机器智能”(Machine Intelligent)的概念,并且提出了著名的“图灵测试”的方法来判断机器是否有智能。 1956年,达特茅斯会议,“人工智能”(Artificial Intelligent)概念被首次提出,人工智能作

    2024年02月02日
    浏览(46)
  • Lighting Network(闪电网络)大白话解析

    通道(Channel),通过在主网宣布通道建立,而后交易双方转至链下交易,把多次交易在链下完成,不占用主网资源,交易完成后在主网广播最终交易结果,无需更改主网机制即可实现吞吐量的提高。 “通道”是一个逻辑上的概念,实际使用过程中并没有“通道”,即使在数据传

    2024年02月04日
    浏览(34)
  • 用大白话举例子讲明白区块链

    什么是区块链?网上这么说: 区块链是一种分布式数据库技术,它以块的形式记录和存储交易数据,并使用密码学算法保证数据的安全性和不可篡改性。每个块都包含了前一个块的哈希值和自身的交易数据,形成了一个不断增长的链条。 区块链的特点包括: 分布式:区块链

    2024年02月04日
    浏览(43)
  • 设计模式大白话——适配器模式

    ​ 适配器其实非常好理解,放到生活中来,我们身边处处都有这样的例子,最常见的是用的比较多的各种转接线(如:USB 转 Type-C),有了这个“适配器”,我们就能够将电脑和手机等设备相进行连接,而不需要改动电脑/手机的原有接口。 ​ 回到编程的世界中,假设我们的

    2024年02月10日
    浏览(33)
  • 大白话理解-微信小程序获取授权

    微信用户授权,才可以操作微信官方的某些接口。 简单来说就是:微信定义了很多接口,然后他们认为有一部分是涉及到用户使用安全的,所以把这一部分划分了出来,然后这一部分按照功能来拆开各种范围。于是有了scope列表的东西,scope翻译为中文是范围的意思。(定位属于

    2024年02月02日
    浏览(29)
  • 别样的git学习--大白话学git

    希望用更加口语化的语言向大家讲述git 的魅力 1、Git-stash (贮存) 想象一下,你正在写一封重要的邮件,但突然你的老板告诉你需要立即处理另一个紧急任务。你还没完成邮件,不想丢失已写的内容,但你也需要一个干净的工作空间来处理新的任务。在这种情况下,Git 的

    2024年01月24日
    浏览(36)
  • 大白话说说Docker容器默认网络模型工作原理

    Docker的默认网络模型 —— 桥接模式(Bridge) 当你不做任何特殊设置时,Docker会使用一种叫做“桥接模式”的网络设置。这就像是给你的容器小房子安装了一个虚拟的桥接网络。这座桥连接着容器和你的电脑(宿主机),还能与外界通信。 虚拟网络桥 :想象一下,在你的电

    2024年02月21日
    浏览(32)
  • 用大白话来讲讲多线程的知识架构

    感觉多线程的知识又多又杂,自从接触java,就在一遍一遍捋脉络和深入学习。现在将这次的学习成果展示如下。 什么是多线程? 操作系统运行一个程序,就是一个线程。同时运行多个程序,就是多线程。即在同一时间,并行做多件事。 “并行”是相对于我们这些用户来说的

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包