密码学中,Twofish是一种对称密钥块密码,块大小为128位,密钥长度可达256位。

1997年,NIST宣布竞争选择DES的继任者,称为AES,Twofish是高级加密标准竞争五个入围者之一,但没有被选为标准。

Twofish与早期的块密码Blowfish有关。Twofish的主要特点是使用预先计算的密钥依赖性S盒,以及相对复杂的密钥时间表。n位密钥的一半被用作实际的加密密钥,而n位密钥的另一半被用来修改加密算法(密钥依赖性S-boxes)。Twofish使用了其他设计中的一些元素;例如,SAFER系列密码器中的伪哈达玛德变换(PHT)。Twofish使用与DES相同的Feistel结构。

在大多数软件平台上,对于128位密钥,Twofish比Rijndael(高级加密标准选择的算法)稍慢,但对于256位密钥,则要快一些。

Twofish是由Bruce Schneier、John Kelsey、Doug Whiting、David Wagner、Chris Hall和Niels Ferguson设计的。"扩展的Twofish团队"开会对Twofish和其他AES竞争者做了进一步的加密分析,包括Stefan Lucks、Tadayoshi Kohno和Mike Stay。

Twofish算法是免费的,任何人都可以使用,没有任何限制。Twofish密码没有获得专利,其规范的软件实例已被置于公共领域。不过,Twofish不像Blowfish那样被广泛使用,它的使用时间较长。