一、S-DES
S-DES 是一种简化版的数据加密标准。相对于 DES 来说,S-DES 更加简单、快速、高效,可以用于学习加密算法的入门课程。
二、加密和解密步骤
使用 S-DES 进行加密和解密的步骤如下:
- 初始置换(IP)- 将 8 位明文分为左右两部分,各 4 位,进行初始置换,得到置换后的左右两部分。
- 轮函数(F)- 对置换后的右半部分进行扩展置换(
E-P
),将其扩展为 8 位。- 将扩展后的结果与轮密钥 K1 进行异或运算,再将异或的结果拆分成 2 个 4 位的块。- 将这 2 个块分别通过S 盒代替(S0 和 S1)
,然后再进行 P4 置换,最后将 P4 置换后的结果与左半部分进行异或,得到 F 函数输出的结果。
S盒运算规则(具体见案例):
- 将第1和第4的输入比特做2—bit数,指示为S盒的一个行;
- 将第2和第3的输入比特作为S盒的一个列;
- 其中S0查表需要E-P和K的异或的结果的前4位,S1为后4位。
- 如S1=1101 ,第1个数和第四个数代表要查的行,第2个数和第3个数代表要查的列,即11行(第3行),第10列(第2列),查询矩阵的结果是1,即01。
注意矩阵的起始行列都是第0行(列)
- 轮秘钥生成- 根据初始密钥生成 2 个 8 位的密钥(K1 和 K2)。- 首先对初始密钥进行
P10 置换
,并将置换后的结果分为左右两部分,各 5 位。- 接下来对左右两部分进行循环左移
,得到移位后的结果。- 最后将左右两部分合并,并进行P8 置换
,得到 K1。- 对 K1 进行循环左移,并进行 P8 置换,得到 K2。
- 加密和解密- 将明文通过初始置换(
IP
)得到左右两部分。- 然后进行2 轮加密/解密操作
,每轮操作包括以下步骤: - 将右半部分作为输入,通过F 函数
得到输出。- 将 F 函数的输出与左半部分进行异或运算,得到新的右半部分。- 将原来的右半部分作为新的左半部分。- 如果是加密操作,则使用K1 进行第一轮加密
,使用K2 进行第二轮加密
;如果是解密操作,则使用 K2 进行第一轮解密,使用 K1 进行第二轮解密。- 将左右两部分交换,再进行一次初始置换逆置换
( I P − 1 IP^{-1} IP−1),得到密文或明文。
三、案例
- 密钥生成
问题描述:S-DES加密, 密匙 K = ( 10100 , 00010 ) , P 10 = ( 3 , 5 , 2 , 7 , 4 , 10 , 1 , 9 , 8 , 6 ) , P 8 = ( 6 , 3 , 7 , 4 , 8 , 5 , 10 , 9 ) 则 K 1 , k 2 密匙K=(10100,00010),P10=(3,5,2,7,4,10,1,9,8,6),P8=(6,3,7,4,8,5,10,9)则K1,k2 密匙K=(10100,00010),P10=(3,5,2,7,4,10,1,9,8,6),P8=(6,3,7,4,8,5,10,9)则K1,k2分别为?
- 计算P10后的密匙
K ( P 10 ) K(P10) K(P10):10100 00010 (3,5,2,7,4 10,1,9,8,6)=10000 01100
- 计算 K 1 K1 K1
左四位、右四位 L S − 1 LS-1 LS−1后合并:00001 11000
K 1 ( P 8 ) K1(P8) K1(P8):00001 11000 (6,3,7,4, 8,5,10,9)=1010 0100
- 计算 K 2 K2 K2
在已经 L S − 1 LS-1 LS−1的基础上 L S − 2 LS-2 LS−2: 00100 00011
K 2 ( P 8 ) K2(P8) K2(P8):00100 00011(6,3,7,4, 8,5,10,9)=0100 0011
- 进行S-DES加密
已知: 明文 P = ( 1011 , 0101 ) , I P = ( 2 , 6 , 3 , 1 , 4 , 8 , 5 , 7 ) , E − P = ( 4 , 1 , 2 , 3 , 2 , 3 , 4 , 1 ) , P 4 = ( 2 , 4 , 3 , 1 ) , I P − 1 = ( 4 , 1 , 3 , 5 , 7 , 2
版权归原作者 「已注销」 所有, 如有侵权,请联系我们删除。