Στην κρυπτογραφία, το Twofish είναι ένας κρυπτογράφος μπλοκ συμμετρικού κλειδιού με μέγεθος μπλοκ 128 bit και μήκος κλειδιού έως 256 bit.
Το 1997, το NIST ανακοίνωσε διαγωνισμό για την επιλογή ενός διαδόχου του DES, γνωστού ως AES, το Twofish ήταν ένας από τους πέντε φιναλίστ του διαγωνισμού Advanced Encryption Standard, αλλά δεν επιλέχθηκε ως πρότυπο.
Το Twofish σχετίζεται με το προηγούμενο block cipher Blowfish. Τα κύρια χαρακτηριστικά του Twofish είναι η χρήση προ-υπολογισμένων S-boxes που εξαρτώνται από το κλειδί και ένα σχετικά πολύπλοκο πρόγραμμα κλειδιών. Το ένα μισό ενός κλειδιού n-bit χρησιμοποιείται ως το πραγματικό κλειδί κρυπτογράφησης και το άλλο μισό του κλειδιού n-bit χρησιμοποιείται για την τροποποίηση του αλγορίθμου κρυπτογράφησης (εξαρτώμενα από το κλειδί S-boxes). Το Twofish χρησιμοποιεί ορισμένα στοιχεία από άλλα σχέδια- για παράδειγμα, τον μετασχηματισμό ψευδο-Hadamard (PHT) από την οικογένεια κρυπτογραφήσεων SAFER. Ο Twofish χρησιμοποιεί την ίδια δομή Feistel με τον DES.
Στις περισσότερες πλατφόρμες λογισμικού το Twofish είναι ελαφρώς πιο αργό από το Rijndael (ο αλγόριθμος που επιλέχθηκε για το Advanced Encryption Standard) για κλειδιά 128-bit, αλλά κάπως πιο γρήγορο για κλειδιά 256-bit.
Το 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, το οποίο είναι διαθέσιμο για μεγαλύτερο χρονικό διάστημα.