在
密码学中,S盒(Substitution-box)是对称密钥算法执行置换计算的基本结构。S盒用在分组
密码算法中,是唯一的
非线性结构,其S盒的指标的好坏直接决定了密码算法的好坏。
压缩后的密钥与扩展分组异或以后得到48位的数据,将这个数据送入S盒,进行替代运算。替代由8个不同的S盒完成,每个S盒有6位输入4位输出。48位输入分为8个6位的分组,一个分组对应一个S盒,对应的S盒对各组进行代替操作。
一个S盒就是一个4行16列的表,盒中的每一项都是一个4位二进制数表示的十进制数。S盒的6个输入确定了其对应的那个盒。输入的高低两位做为行数H,中间四位做为列数L,在S-BOX中查找第H行L列对应的数据。(S盒的行列计数都是从0开始。)
我们以s8盒为例,输入110011,第一位和第六位(最高位和最低位)组合为11(二进制),转换为十进制为3,则在s8盒中行号为3。接下来我们计算列,原始数据第二位到第五位为1001(二进制),转换为十进制为9,则在s8盒中列号为9。s盒8的03行09列的数字为12,转换为二进制为1100,因此用二进制1100来代替110011。