Kriptografide Twofish, 128 bit blok boyutuna ve 256 bite kadar anahtar uzunluğuna sahip bir simetrik anahtar blok şifresidir.
1997'de NIST, AES olarak bilinecek DES'in halefini seçmek için bir yarışma duyurdu, Twofish, Gelişmiş Şifreleme Standardı yarışmasının beş finalistinden biriydi, ancak standart olarak seçilmedi.
Twofish daha önceki blok şifre Blowfish ile ilişkilidir. Twofish'in ana özellikleri, önceden hesaplanmış anahtara bağlı S-kutularının kullanılması ve nispeten karmaşık bir anahtar çizelgesidir. Bir n-bit anahtarın yarısı gerçek şifreleme anahtarı olarak kullanılır ve n-bit anahtarın diğer yarısı şifreleme algoritmasını değiştirmek için kullanılır (anahtara bağlı S-kutuları). Twofish diğer tasarımlardan bazı öğeler kullanır; örneğin, SAFER şifreleme ailesinden pseudo-Hadamard dönüşümü (PHT). Twofish, DES ile aynı Feistel yapısını kullanır.
Çoğu yazılım platformunda Twofish, 128 bit anahtarlar için Rijndael'den (Gelişmiş Şifreleme Standardı için seçilen algoritma) biraz daha yavaştır, ancak 256 bit anahtarlar için biraz daha hızlıdır.
Twofish, Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall ve Niels Ferguson tarafından tasarlanmıştır; Twofish ve diğer AES rakiplerinin daha fazla kriptanalizini yapmak için bir araya gelen "genişletilmiş Twofish ekibi" Stefan Lucks, Tadayoshi Kohno ve Mike Stay'i içeriyordu.
Twofish algoritması herhangi bir kısıtlama olmaksızın herkesin kullanımı için ücretsizdir. Twofish şifresi patentlenmemiştir ve özelliklerinin yazılım örneği kamu malı haline getirilmiştir. Bununla birlikte, Twofish, daha uzun bir süredir mevcut olan Blowfish gibi yaygın olarak kullanılmamaktadır.