加密算法--DES对称加密算法详解

加密算法–DES对称加密算法详解

一、什么是DES算法?
二.、DES算法是怎么加密的?
三、加密具体过程?

  一 、下面来回答第一个问题:什么是DES算法?
  DES(Data Encryption Standard,即数据加密标准),是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。
   二、接下来回答第二个问题:DES算法是怎么加密的?
  DES是将明文按64位进行分组,密钥长64位,密钥是利用56+8奇偶校验位(第8,16,24,32,40,48,56,64)=64位的密钥对以64位为单位的块数据进行加解密。参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。
  DES算法的加密密钥是根据用户输入的密码生成的,该算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位.如果输入的密码只是在这8位上有区别的话,那么操作后的结果将是一样的.des-1
  DES是一种对称密码,加密过程和解密过程使用相同的密钥。DES是一种迭代算法。DES对明文中的每个分组的加密都包含16轮,且每轮的操作完全相同。每轮都会使用不同的子密钥,并且子密钥Ki都从主密钥推导而来。
迭代过程
  三、第三个问题: 加密具体过程?
   DES算法的步骤,包括IP置换、密钥置换、E扩展置换、S盒代替、P盒置换和逆初始置换IP-1
加密过程
   3.1、IP置换与逆初始置换IP-1
  3.1.1、IP置换
  IP置换:根据置换表哥将输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位。
IP置换表格
说明:(1)表格从左到右,从上到下地阅读。数字代表新数据中此位置的数据在原数据中的位置,即原数据块的第58位放到新数据的第1位,第50位放到第2位,……依此类推,第7位放到第64位。
(2)置换后的数据分为L0和R0两部分,L0为新数据的左32位,R0为新数据的右32位。
(3)位数是从左边开始数的,即最0x0000 0080 0000 0002最左边的位为1,最右边的位为64。
3.1.2、逆初始置换IP-1
  逆初始置换IP-1:初始置换的逆过程,DES最后一轮后,左、右两半部分并未进行交换,而是两部分合并形成一个分组做为末置换的输入。
IP-1逆初始置换
  3.2、密钥置换
 e (1)每个字节的第8位是奇偶校验位,DES的密钥由64位减至56位,每个字节的第8位作为奇偶校验位。产生的56位密钥由下表生成(注意表中没有8,16,24,32,40,48,56和64这8位):
密钥置换-1
  (2)在DES的每一轮中,从56位密钥产生出不同的48位子密钥,确定这些子密钥的方式如下:
  1).将56位的密钥分成两部分,每部分28位。
  2).根据轮数,这两部分分别循环左移1位或2位。每轮移动的位数如下表:
密钥置换-2
  (3)移动后,从56位中选出48位。这个过程中,既置换了每位的顺序,又选择了子密钥,因此称为压缩置换。压缩置换规则如下表(注意表中没有9,18,22,25,35,38,43和54这8位):
密钥置换-3
  3.3、扩展置换E
  扩展置置换目标是IP置换后获得的右半部分R0,将32位输入扩展为48位(分为4位×8组)输出。
  扩展置换目的有两个:生成与密钥相同长度的数据以进行异或运算;提供更长的结果,在后续的替代运算中可以进行压缩。
扩展置换-1
  表中的数字代表位,两列黄色数据是扩展的数据,可以看出,扩展的数据是从相邻两组分别取靠近的一位,4位变为6位。靠近32位的位为1,靠近1位的位为32。表中第二行的4取自上组中的末位,9取自下组中的首位。
  3.4、S盒变换
  压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送人S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。
s盒变换-1
  一个S盒就是一个4行16列的表,盒中的每一项都是一个4位的数。S盒的6个输入确定了其对应的输出在哪一行哪一列,输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据(<32)。
  8个S盒如下:
  S盒1
  s盒1

S盒2S盒2
S盒3
S盒3
S盒4
S盒4
S盒5
S盒5
S盒6
S盒6
S盒7
S盒7
S盒8
S盒8
(1)注意,S盒的行列计数都是从0开始。
(2)代替过程产生8个4位的分组,组合在一起形成32位数据。
(3)S盒代替时DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的:S(a)⊕S(b)≠S(a⊕b),相比于其他步骤,提供了更好安全性。
(4)每一个S-盒都有6个输入位和4个输出位。
(5)任意一个输出位都不应该太接近于输出位的线性组合。
(6)如果输入位的最高位和最低位是固定的,只有中间的4个是可变的,则每个可能的4位输出值都必须只出现一次。
(7)对于S-盒的两个输出,如果仅有1位不同,则输出至少有两位不同。
(8)对于S-盒的两个输出,如果中间的2位不同,则输出必须至少2位不同。
(9)对于S-盒的两个输出,如果开头2位不同,但最后2位相同,则输出必须不同。
(10)对于S任意有6位非零差分的输入对,32位输入中至多有8对有相同的输出差分
(11)8个S-盒对应的32位输出的冲突(零输出差异)只有在3个相邻的S-盒的情况下才有可能。
  3.5、P盒变换
  S盒代替运算的32位输出按照P盒进行置换。该置换把输入的每位映射到输出位,任何一位不能被映射两次,也不能被略去,映射规则如下表:
P盒变换-1   最后,P盒置换的结果与最初的64位分组左半部分L0异或,然后左、右半部分交换,接着开始另一轮。

  • 2
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

JackieRenne169

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值