Twofish był następnym finalistą AES. Można go traktować jako kompromis między AES a Serpent. Jest on niemal tak szybki jak AES, ale zapewnia wyższy poziom bezpieczeństwa. Co ważniejsze, nie ma on znanej prostej reprezentacji algebraicznej. Najlepszy znany atak obejmuje 8 z 16 tur. Największą wadą Twofish jest to, że zmiana klucza szyfrującego może być kosztowna, gdyż najlepsza implementacja tego algorytmu wymaga wielu obliczeń wstępnych.
Algorytm Twofish wykorzystuje te same struktury Feistela, co DES. Jego schemat pokazano na rysunku 4.36. Podczas szyfrowania Twofish 128-bitowy tekst otwarty dzieli się na cztery wartości 32-bitowe. na których wykonywana jest później większość operacji. Rysunek 4.3 ukazuje strukturę Feistela algorytmu Twofish, w której Fjest funkcją tury. Funkcja tury składa się z dwóch wywołań funkcji g,funkcji o nazwie PHT oraz dodawania klucza. Wynik funkcji jest poddawany operacji XOR z pozostałą częścią danych (dwie pionowe kreski na prawo od bloku funkcji). Prostokąty z symbolami i oznaczają przesunięcia 32-bitowych wartości o zadaną liczbę bitów.
Każda funkcja g składa się z czterech S-boksów i z mieszającej funkcji liniowej bardzo podobnej do funkcji mieszającej AES. S-boksy są już nieco inne. W przeciwieństwie do wszystkich innych omawianych wcześniej szyfrów, tym razem S-boksy nie są stałe: ich zawartość zależy od klucza. Specjalny algorytm wylicza tablice S-boksów na podstawie klucza. Uzasadnieniem takiego rozwiązania jest utrudnienie analizy S-boksów potencjalnym włamywaczom. Dlatego właśnie w wielu implementacjach Twofish niezbędne są dodatkowe obliczenia wstępne dla każdego nowego klucza. W ich trakcie wyznacza się nowe S-boksy, które następnie są przechowywane w pamięci.
Funkcja PHT miesza dwa wyniki funkcji g korzystając z 32-bitowych operacji dodawania. W ostatniej części funkcji Fma miejsce dodawanie danych z klucza. Dodawanie jest oznaczone na
rysunku symbolem ffl, zaś alternatywa wyłączająca — symbolem ©.
W algorytmie Twofish zastosowano dodatkowe przetwarzanie wstępne i końcowe. Polega ono na dodawaniu pewnych informacji z klucza do danych. W ten sposób szyfr trudniej poddaje się
większości ataków, zaś wzrost kosztu jest niewielki. j
Tak jak w przypadku innych szyfrów, Twofish ma schemat przetwarzania klucza, pozwalający
uzyskać klucze tur oraz dwa dodatkowe klucze: początkowy i końcowy.