W kryptografii Blowfish jest szyfrem blokowym z kluczem, symetrycznym, wyprodukowanym w 1993 r. przez Bruce'a Schneiera i od 1993 r. jest włączany (zestawiany) do wielu produktów szyfrujących. Blowfish posiada dobry współczynnik szyfrowania w oprogramowaniu i do 2008 roku nie znaleziono żadnego kryptoanalitycznego modelu jego ataku. Jednak algorytm szyfrowania blokowego AES ma teraz więcej uwagi.
Schneier wykonał Blowfish jako algorytm ogólnego przeznaczenia, który ma zastąpić stary algorytm DES i usunąć problemy i trudności związane z innymi algorytmami szyfrującymi. W czasie gdy Blowfish został wydany, wiele innych algorytmów było zastrzeżonych lub stanowiło tajemnicę. Schneier powiedział, że "Blowfish jest nieopatentowany i pozostanie taki we wszystkich krajach. Algorytm jest niniejszym umieszczony w domenie publicznej i może być swobodnie używany przez każdego."
Główne cechy projektu to zależne od klucza S-boxy oraz bardzo złożony harmonogram kluczy. Blowfish jest jednym z najszybszych szyfrów blokowych używanych przez wiele osób, z wyjątkiem zmiany kluczy. Każdy nowy klucz musi być wstępnie przetworzony, co zajmuje tyle samo czasu co zaszyfrowanie około 4 kilobajtów tekstu, co jest bardzo wolne w porównaniu z innymi szyframi blokowymi. Zaprzestaje to jego stosowania w niektórych aplikacjach (np. w najmniejszych systemach wbudowanych, takich jak wczesne karty chipowe), ale nie stanowi problemu w innych aplikacjach. W jednej z aplikacji jest to w zasadzie dobre: metoda hasełkowa stosowana w OpenBSD wykorzystuje algorytm pochodzący z Blowfish, który wykorzystuje powolny harmonogram kluczy; chodzi o to, że dodatkowy wysiłek obliczeniowy daje ochronę przed atakami słownikowymi. Zobacz wzmocnienie klucza.
Blowfish ma 64-bitowy rozmiar bloku i zmienną długość klucza od 0 do 448 bitów Jest to 16-okrągły szyfr Feistela i wykorzystuje duże, zależne od klucza S-boxy. Jest podobny w strukturze do CAST-128, który używa stałych S-boxów.
W 1996 r. Serge Vaudenay znalazł znany atak plaintextu, który potrzebował do złamania 28r + 1 znany plaintextu, gdzie r jest liczbą rund. Ponadto, znalazł również klasę słabych kluczy, które mogą być wykryte i złamane przez ten sam atak tylko 24r + 1 znane plaintexts. Ten atak nie może być użyty przeciwko zwykłemu Blowfishowi; zakłada on znajomość zależnych od klucza S-boxów. Vincent Rijmen, w swojej pracy doktorskiej, wprowadził atak różnicowy drugiego rzędu, który może przerwać cztery rundy i nie więcej. Wciąż nie ma znanego sposobu na przełamanie pełnych 16 rund, poza brutalnymi poszukiwaniami. W 1996 roku znaleziono błąd rozszerzenia znaku w jednym z opublikowanych kodów C.
Nie ma dobrej kryptoanalizy na pełnej wersji Blowfish znanej publicznie do 2008 roku. Jednakże, w 2007 roku Bruce Schneier zauważył, że podczas gdy Blowfish jest nadal używany, zalecił użycie nowego algorytmu Twofish zamiast tego