type
status
category
date
slug
summary
tags
icon
Last edited time
May 21, 2023 07:57 AM
简介
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美 国IBM公司研制的对称密码体制加密算法。DES是一种对称密码,即其加密过程和解 密过程使用相同的密钥,与几乎所有现代分组加密一样,DES也是一种迭代算法。D ES对明文中每个分组对加密过程都包含16轮,且每轮都操作完全相同
实现原理
主要流程
加密
一、了解几个概念
初始置换/逆初始置换
按照一定的规则,将原来的64位二进制位重新排序 表中数字的意思是。第一个格子中是58,意味着将64位二进制码中第58位的值,放到第 一个格子的位置中,以此类推
f函数
- f函数首先将输入经过扩展置换,将32位的输入扩展为48位。
- 将48位结果与第i轮第密钥ki进行XOR(异或)操作
- 将异或操作第结果送入S盒进行压缩,压缩成32位
- 将32位的结果送入P盒置换
扩展置换
黑盒压缩
黑盒压缩,也称S盒压缩 就是把’48位与ki异或之后‘的结果,进行压缩,压缩成为32位。
使用的方法是将48位二进制码 每6个分成1组,一共8组,对应8个黑盒。
下面以第一组为例,假设第一组中的二进制数为100101 经过黑盒压缩,得到了1000
以下为8个黑盒
P盒置换
和上面初始置换的用法一样,表不同而已
密钥编排
密钥编排从原始的56位密钥中得到16个轮密钥k,其中每个轮密钥ki都是48位。
轮密钥的另一个术语叫子密钥。
PC-1
PC-2
二、具体流程
明文输入后,经过 初始置换,打乱了顺序。
经过初始置换被分成了 L0 和 R0 两部分
R0 经过 f 函数 得到的输出与 L0 进行 异或 操作,得到的输出作为下一轮的 R1
R0 作为下一轮的 L1
经过很多轮之后,将 L16 与 R16 交换左右之后,再进行一个 逆初始置换
则得到密文
f 函数中
Ri-1 经过 扩展置换 得到了 48 位的输出
将 48 位输出与 ki 进行异或,
将***异或***后的输出进行 S 盒压缩成 32 位
再进行 P 盒置换,得到输出,作为 f 函数的输出
密钥编排中
DES 输入的密钥通常是 64 位,其中每第 8 个位都作为前面 7 位的一个奇校验位。
所以将 64 位密钥进行 PC-1 得到 56 位,是将校验位全部去掉了
PC-1 的置换 和初始置换思路一样
将 PC-1 的输出分成长度均为 28 位的两部分
将两部分周期性地向左移动一或两位(即 循环移位 ),移动的具体位数取决于轮数 i
- 在第 i=1,2,9,16 轮中,左右两部分向 左移动一位
- 在 i != 1、2、9、16 轮时候,左右两部分向 左移动两位
经过 PC-2 后得到的 48 位输出作为 ki
参考资料
《深入浅出密码学》--Christof Paar,Jan Pelzl
- 作者:Jimmy Huang
- 链接:https://huangjihao.com/84f5213d-11f3-4de0-a8ae-9a3849a8e29b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。