S-box,即“substitution box”,是密碼學領域的一個基本組件,其功能是實現數據的非線性置換。
S-box主要應用於對稱加密演演算法中,如DES (Data Encryption Standard)、
AES (Advanced Encryption Standard)、
SM1(國密演演算法)、SM4(國密演演算法)。以DES演演算法中的S1為例,圖示如下:
| x0000x | x0001x | x0010x | x0011x | x0100x | x0101x | x0110x | x0111x |
0xxxx0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 |
0xxxx1 | | 15 | 7 | 4 | 14 | 2 | 13 | 1 |
1xxxx0 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 |
1xxxx1 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 |
這個S-box實現6比特數到4比特數的置換。在做數據置換時,將原數據的
二進位表示對應於橫軸與縱軸的拼接,如0xxxx1與x0010x拼接為000101,表示6比特數據5(十
進位),對應表格中數據為7(十進位)。即5經過S-box替換為7。