S-DES
简介
S-DES是一种简化版本的DES,用于教学目的。其通过置换、代换、密钥生成和简单的加密轮实现基本加密逻辑。
实现逻辑
1.密钥生成
- 首先生成一个10位初始秘钥,分为左右两部分,各5位
- 将左右两部分分别左移1位,得到两个新的5位秘钥
- 将左右两个新的秘钥和为一个10位秘钥
- 通过置换表得到$ K_1 $
- 将左右两部分分别左移2位,得到两个新的5位秘钥
- 将左右两个新的秘钥和为一个10位秘钥,并通过置换表生成$ K_2 $
2.加密过程
- 第一步
- 将明文分块得到多个8位明文块,不足的部分用0补齐
- 将明文块通过初始置换表得到$ IP $
- 将$ IP $分为左右两部分,各4位
- 将右部分通过扩展置换表得到8位
- 将$ E(R) $和$ K_1 $异或得到8位
- 将异或结果分为两部分,各4位
- 将两部分分别通过S盒组合得到4位
- 将S盒置换结果和左部分异或得到新的右部分
- 将新的右部分作为左部分,与原来的右部分组合得到新的IP
- 第二步
- 交换左右两部分
- 重复第一步
- 第三步
- 通过$ IP^{-1} $得到密文
解释一下S盒代换
假设:扩展异或后的输入为 10101100。
子密钥 𝐾1=10100100
- 步骤 1:分组
- 前4位:1010 -> 输入 S0。
- 后4位:1100 -> 输入 S1。
- 步骤 2:查表
- S0 查表:
- 行号:10(十进制 2),列号:01(十进制 1)。
- S0 输出:10。
- S1 查表:
- 行号:11(十进制 3),列号:00(十进制 0)。
- S1 输出:10。
- S0 查表:
- 步骤 3:合并与置换
- 合并 S0 和 S1 输出:1010。
- 对 1010 应用 P4 置换([2, 4, 3, 1]):
- 输入:1010。
- 输出:0101。
- 结果
S盒代换的最终输出为 0101。
解密过程
- 与加密过程相同,只是密钥的使用顺序相反,即先使用$ K_2 $再使用$ K_1 $
注
DES和S-DES中的 交换
过程即 Feistel 结构,保证了每一轮都可以影响最终加密的结果