DES算法S盒学习

在密码学中,S盒(Substitution-box)是对称**算法执行置换计算的基本结构。
S盒用在分组密码算法中,是唯一的非线性结构。

 

S盒是将48比特压缩成32比特,S盒接受特定数量的输入48比特,经过8个盒将其转换为32比特输出。

在DES算法中替代由8个不同的S盒完成,每个S盒有6位输入4位输出。

一个S盒就是一个4行16列的表,盒中的每一项都是一个4位二进制数表示的十进制数。
输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据。
S盒的行列计数都是从0开始。

例如,S1盒如下;
S1盒
0    1    2    3    4    5    6    7    8    9    10    11    12    13    14    15
0    14    4    13    1    2    15    11    8    3    10    6    12    5    9    0    7
1    0    15    7    4    14    2    13    1    10    6    12    11    9    5    3    8
2    4    1    14    8    13    6    2    11    15    12    9    7    3    10    5    0
3    15    12    8    2    4    9    1    7    5    11    3    14    10    0    6    13


以s8盒为例,输入110011,
第一位和第六位(最高位和最低位)组合为11(二进制),转换为十进制为3,则在s8盒中行号为3;
接下来计算列,原始数据第二位到第五位为1001(二进制),转换为十进制为9,则在s8盒中列号为9;
s盒8的03行09列的数字为12,转换为二进制为1100,因此用二进制1100来代替110011;

 

S盒代替是DES算法的关键步骤,所有的其他的运算都是线性的,易于分析,而S盒是非线性的,相比于其他步骤,提供了更好安全性。