DES算法

DES

  • Data Encryption Standard,数据加密标准
  • 分组加密算法
  • 56位的密钥加密64位明文
    • 64位的密钥每8位是一个奇偶校验位,只有56位有效密钥
    • 把明文拆成n个64位明文数据块

整体结构图

在这里插入图片描述

初始(终止)置换

在这里插入图片描述
将输入的58位换到第1位,输入的第50位放到第2位…

整体结构图(进阶)

在这里插入图片描述

轮结构变换F函数

在这里插入图片描述

  • 最后一轮完成后,还要再进行一次左右交换

E盒扩展

  • 经过 初始置换64 位数据被分为左右 32 位数据,其中右边的 32 位数据经过 E盒扩展 变成 48 位数据
  • 其实就是在某些位置进行了填位操作

在这里插入图片描述

轮密钥的产生

在这里插入图片描述

  1. 输入 64 位密钥K0,根据PC-1进行置换得到 56
    在这里插入图片描述
  2. 把得到的 56 位分成左右两半各 28
  3. 根据循环左移表,分别将左右两半进行左移,拼在一起得到新的 56
    在这里插入图片描述
  4. 将新得到 56 位密钥根据PC-2置换表进行置换,得到 48 位密钥 K1(DES第一轮的子密钥),一共要产生16个轮子密钥,表示为 K1 到 K16
    在这里插入图片描述

S盒压缩

  • 经过扩展的 48 位输入和 48 位密钥进行异或运算后,再使用 8 个S盒压缩得到 32 位数据
  • 实际上就是将 48 位输入分成 86 个元素,每块 6 位压缩为 4 位输出
    S盒
  1. 取每组数据的第一位和最后一位,拼起来转换成十进制,作为行数
  2. 取每组数据中间的四位,转换成十进制,作为列数
  3. 根据行号和列号找到对应的十进制数据
  4. 把该数据转换成二进制输出(4位)
  5. 表中的行号和列号都是从0开始计数

P盒置换

S盒压缩输出得到 32 位数据,经过P盒置换运算
在这里插入图片描述

解密

DES的加密和解密,不管从流程图上还是代码上,几乎完全一致。只不过加密输入的是明文和密钥(K1 - K16),解密输入的是密文和密钥(K16 - K1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值