In de cryptografie is Twofish een symmetrisch blokcijfer met een blokgrootte van 128 bits en sleutellengtes tot 256 bits.

In 1997 kondigde het NIST een competitie aan om een opvolger van DES te kiezen die bekend zou staan als AES. Twofish was een van de vijf finalisten van de Advanced Encryption Standard competitie, maar werd niet geselecteerd als standaard.

Twofish is verwant aan het vroegere blokcijfer Blowfish. De belangrijkste kenmerken van Twofish zijn het gebruik van vooraf berekende sleutelafhankelijke S-boxen en een relatief complex sleutelschema. De ene helft van een n-bit sleutel wordt gebruikt als de eigenlijke vercijferingssleutel en de andere helft van de n-bit sleutel wordt gebruikt om het vercijferingsalgoritme aan te passen (sleutelafhankelijke S-boxen). Twofish gebruikt enkele elementen van andere ontwerpen; bijvoorbeeld de pseudo-Hadamardtransformatie (PHT) uit de SAFER-familie van vercijferingen. Twofish gebruikt dezelfde Feistel-structuur als DES.

Op de meeste softwareplatforms is Twofish iets langzamer dan Rijndael (het gekozen algoritme voor Advanced Encryption Standard) voor 128-bits sleutels, maar iets sneller voor 256-bits sleutels.