跳转到内容

用户:Jwchong/test

维基百科,自由的百科全书

密码学中的S盒(英:S-Box,Substitution-box)是对称加密算法中进行转换时的基本构造。在块加密中使用S盒通常是为了掩饰密文与密码之间的关系。S盒常常都经精心设计以对抗密码分析

总的来说,S盒的运作是取若干输入,而后将之切换成若干输出位,,这时,的S盒便能以查找表运用,而这个查找表是由且各个字有个位的结构组成。一般上S盒是固定的,如DES中的就是,但有的算法中的S盒是对密码进行计算后生成的,例:BlowfishTwofish算法。

一个很好的例子是这个DES (S5) 位的S盒:

S5 中央4个输入位
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
外围的位 00 0010 1100 0100 0001 0111 1010 1011 0110 1000 0101 0011 1111 1101 0000 1110 1001
01 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1010 0011 1001 1000 0110
10 0100 0010 0001 1011 1010 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 1110
11 1011 1000 1100 0111 0001 1110 0010 1101 0110 1111 0000 1001 1010 0100 0101 0011

有6位输入时,输出的4个位这样取得的:先以外围(第一和最后)的位从横排取,再以中央的4位从竖排取。例:输入“011011”,有外围的位“01”和中央的位“1101”,因此输出位是“1001”。