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。
步骤 3:合并与置换 合并 S0 和 S1 输出:1010。
对 1010 应用 P4 置换([2, 4, 3, 1]):
输入:1010。
输出:0101。
结果S盒代换的最终输出为 0101。
解密过程
- 与加密过程相同,只是密钥的使用顺序相反,即先使用$ K_2 $再使用$ K_1 $
注
DES和S-DES中的 交换 过程即 Feistel 结构,保证了每一轮都可以影响最终加密的结果

留个评论吧