代换-置换网络

在密码学中，代换-置换网络（或译作置换排列网络，，縮寫作或）是乘积密码和分组加密的一种。美國數學家克劳德·香农为了利用简单的代换-置换方式进行常规加密，在1949年发明了代换-置换网络。

简介

代换-置换网络是一系列被应用于分组密码中相关的数学运算，高級加密標準（、、、、、SHARK、Square都有涉用。这种加密网络使用明文塊和密钥塊作为输入，并通过交错的若干“轮”（或“层”）代换操作和置换操作產生密文塊。代换（Substitution）和置换（Permutation）分别被称作S盒（替換盒，）和P盒（排列盒，）。由于其实施于硬件的高效性，SPN的应用十分广泛。《密码学原理和实践》[加]道格拉斯·R·史丁森 3.2节 置换-代换网络。

定义
一个SPN包括两个长度分别为l, m的映射变换，变换结果为lm分组长度的明文到相同分组长度的密文空间。为对分组进行加密，需要一个同样长度为lm的密钥。而该密钥每一轮加密中均不相同，由初始密钥K按照一定原则产生。加密主要包括三个部分：代换，置换和轮密钥混合（通常为异或（）操作）。"Principles and Performance of Cryptographic Algorithms" by Bart Preneel, Vincent Rijmen, and Antoon Bosselaers.密钥的生成规则称为密钥编排算法。

定义：

为S盒和P盒。加密共N轮。则对

的密钥编排方案，使用如下算法顺序加密明文x：





直至生成密文。

变种
被选作高级加密标准的Rijndael使用的就是8比特映射到8比特的S盒，密钥长度最小为128比特，最小轮数为10，分组长度同样为128比特。该大小的S盒和密钥长度保证了安全性。常用的变种包括使用不止一个S盒，或者在每一轮中增加或替换一个可逆的线性变换，这可以在高级加密标准中看到。

 參見 
 Feistel架構
 乘积密码（）
 平方密码（
 國際資料加密演算法（）

参考文献

 延伸閲讀 

Category:密码算法
Category:分组密码
Category:密码