用户:Jwchong/test
外观
密码学中的S盒(英:S-Box,Substitution-box)是对称加密算法中进行转换时的基本构造。在块加密中使用S盒通常是为了掩饰密文与密码之间的关系。S盒常常都经精心设计以对抗密码分析。
总的来说,S盒的运作是取若干输入位,,而后将之切换成若干输出位,,这时,的S盒便能以查找表运用,而这个查找表是由个字且各个字有个位的结构组成。一般上S盒是固定的,如DES中的就是,但有的算法中的S盒是对密码进行计算后生成的,例:Blowfish与Twofish算法。
一个很好的例子是这个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”。