在密码学中,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盒是非线性的,相比于其他步骤,提供了更好安全性。