Sボックス
S-boxは、m ビットの入力を n ビット出力に変換する関数であり、2 のルックアップテーブルによって実装できる。
通常は、DESのように固定テーブルとして定義されるが、暗号によっては鍵によってテーブルを動的に生成して使用するものもある。動的に生成する例として、BlowfishやTwofish がある。
1970年代に設計されたDESでは6ビット入力 4ビット出力の S-box を8種類使用しているが、2000年代に設計されたAESやCamelliaでは8ビット入出力のS-boxを1種類使用している(Camelliaでは4種の S-box を持つが、三つのS-boxは一つのS-boxの単純な変換となっている)。これはソフトウェアやハードウェアでの実装時に、スピード優先だけではなく、サイズ縮小を優先させた実装も考慮したためである。
S-boxの設計は、DES作成時にはIBM大型コンピュータを何ヶ月か使ったほど設計は難しい、と言われている。