In crittografia, Twofish è un cifrario a blocco di chiave simmetrico con una dimensione del blocco di 128 bit e una lunghezza della chiave fino a 256 bit.
Nel 1997, il NIST ha annunciato per il concorso la scelta di un successore del DES da denominare AES, Twofish è stato uno dei cinque finalisti del concorso Advanced Encryption Standard, ma non è stato selezionato come standard.
Twofish è collegato al precedente cifrario a blocchi Blowfish. Le caratteristiche principali di Twofish sono l'uso di S-box pre-calcolate che dipendono dalla chiave, e un programma di chiavi relativamente complesso. Una metà di una chiave a n-bit viene utilizzata come chiave di cifratura vera e propria e l'altra metà della chiave a n-bit viene utilizzata per modificare l'algoritmo di cifratura (S-boxes dipendenti dalla chiave). Twofish utilizza alcuni elementi di altri design; per esempio, la pseudo-trasformazione di Hadamard (PHT) della famiglia di cifrari SAFER. Twofish utilizza la stessa struttura Feistel del DES.
Sulla maggior parte delle piattaforme software Twofish è leggermente più lento di Rijndael (l'algoritmo scelto per Advanced Encryption Standard) per le chiavi a 128 bit, ma un po' più veloce per le chiavi a 256 bit.
Twofish è stato progettato da Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall e Niels Ferguson; il "team Twofish esteso" che si è riunito per fare un'ulteriore criptoanalisi di Twofish e di altri concorrenti AES comprendeva Stefan Lucks, Tadayoshi Kohno e Mike Stay.
L'algoritmo Twofish è gratuito per chiunque, senza alcuna restrizione. Il cifrario Twofish non è stato brevettato e l'esempio software delle sue specifiche è stato reso di pubblico dominio. Tuttavia, Twofish non è ampiamente utilizzato come il Blowfish, che è stato disponibile per un periodo di tempo più lungo.