DES加密算法原理简介


简化版流程


3.1 数据加密标准DES

DES算法将明文按64位分组,使用的密钥长度为64位(实际参与加密的有56位)。

密钥的第8、16、24、…、64位作为校验位,不参与加密

DES的加密思想是对密钥和明文都进行一系列复杂变换处理,中间分为多个小段单独异或加密,最后再合成变换得到最终密文。符合所谓的混淆原则扩散原则

混淆原则:密文与其对应的明文与密钥的关系足够复杂。

扩散原则:密文中的每一位都受到明文和密钥中的尽可能多位的影响,以隐蔽明文

的统计特性和结构规律。

3.1.1 子密钥

DES中的密钥不是直接使用的,要经过一系列变换才能拿去跟明文做异或。

  1. 提取有效位(56位)

    DES中密钥的转换表(DesTransform[56])

    把64位密钥提取出56位。(去除校验位)

    后续会用到各种转换表,这里简单解释一下,比如第一行第一列的“57”,意思就是把原本数据表中第57个数据填到转换后的新表中的第一行第一列这个位置。

  2. 旋转左移,16种结果

    针对DES子密钥每一轮的旋转次数(Round轮,Rotations旋转次数)(DesRotations)

    为了得到16个不同的子密钥,先将上一步得到的56位密钥分为两组各28位,接着根据该旋转表,分别旋转左移对应位数,旋转完再合并,这样就得到一组新子密钥,而下一组是在前一组的基础上再次对半分并旋转左移获得的。最终生成16组子密钥。

  3. 置换选择

    DES子密钥的置换选择(Despermuted[48])

    其实就是进一步缩小密钥位数。把上一步获得的16组子密钥分别通过该转换表。

于是,我们得到了16组各48位的子密钥。

3.1.2 加密解密

明文按照64位一组分组。以下操作针对一组64位的明文。

  1. 初始置换

    DES中数据的初始置换(DesInitial[64])

    先将明文按转换表打乱初始化,并将处理后的数据分为两组各32位,记为L0和R0。

  2. 扩展置换

    DES中数据块的扩展置换(DesExpansion[48])

    将Ri由32位转换扩展到48位。

    目的是在加密数据的过程中制造一些雪崩效应

    使用数据块中的1位,将在下一步操作中影响更多位,从而产生扩散效果

  3. XOR

    一旦扩展置换完成,便将所得48位数据Ri与先前的子密钥Ki做XOR异或运算。

    迭代16次,每次使用对应次序的子密钥。

  4. S盒替换

    S盒替换表一共有8个。主要作用是重新把48位数据压缩为32位。

    S盒为数据增加了不确定性,从而提升了安全性。

    将上一步扩展后获得的48位数据Ri按6位一组,分成8组。

    例:

    假设我们取第一组数据按上图处理,得到第三行,第15列,则在第一张S盒替换表中找到对应位置的数,这里我们假设找到的数是13,便再将其转换为二进制数1101,这样,便完成了6位数据压缩为4位数据的过程。

  5. P盒置换

    DES中数据块的P盒置换

    将上一步获得的32位数据经过P盒置换表。

  6. 两组异或

    从第2步到第5步的操作定义为一个函数f。假设我们回到一开始获得的 R 0 R_0 R0,经过函数f后,输出的应该是一组32位的数据,我们设其为 R 0 ′ R_0' R0。接下来的操作就是将一开始的另一组数据 L 0 L_0 L0 R 0 ′ R_0' R0进行XOR异或操作,结果值设为 L 0 ′ L_0' L0

  7. 交换

    现在,经过一系列变换,我们有了新的左右分组 L 0 ′ L_0' L0 R 0 ′ R_0' R0,于是,我们交换两组的位置,即设 R 1 = L 0 ′ R_1=L_0' R1=L0 L 1 = R 0 ′ L_1=R_0' L1=R0

  8. 迭代

    分组 L i L_i Li R i R_i Ri重复第2步到第7步的操作,总共要完成16轮的迭代。其中,最后一轮中左右分组不用交换

    第16轮的 R 16 R_{16} R16在左边, L 16 L_{16} L16在右边。

  9. 连接

    将最后得到的左分组和右分组重新合并,得到一组64位数据。

  10. 最终置换

    DES中数据块的最终置换

    最终置换其实就是初始置换的逆转换。数据经过该转换表得到最终结果。

总结:

对于这第1步到第10步,如果输入的是明文,输出就是密文;如果按照从最后一步倒回来输入密文,输出就是明文。

加密过程:
1、以K1加密
2、以K2解密
3、以K3加密
解密过程(密钥顺序及应用方向与加密过程相反):
1、以K3解密
2、以K2加密
3、以K1解密
说明:K1、K2、K3是密钥。

整个流程可以用下图表示:


参考资料:

数据加密算法–详解DES算法原理与实现

DES加密算法-《信息安全技术》课程微课设计


  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值