Thuật toán mã hóa Blowfish là mật mã khối đối xứng được thiết kế để khắc phục DES chậm và không chắc chắn. Blowfish là mật mã khối khóa, đối xứng, do Bruce Schneier phát minh 1993 và đặt vào công cộng.
Mã hóa đối xứng dùng một khóa đơn để cả mã hóa và giải mã. Thông tin nhạy cảm và khóa đối xứng dùng trong thuật toán mã hóa để biến thông tin nhạy cảm thành bản mã. Blowfish nằm trong nhiều bộ mật mã và sản phẩm mã hóa, như SplashID.
Mật mã khối chung là thủ tục máy tính lấy lượng bản rõ và chuyển thành văn bản mã, hoặc cipher-text. Thực hiện thủ tục trên các đoạn văn bản gọi là khối. Để văn bản giải mã phía kia truyền tải, hàm cũng phải tạo khóa mở cipher-text.
Blowfish cũng là một trong những mật mã khối nhanh nhất dùng công khai, làm nó lý tưởng cho sản phẩm như SplashID hoạt động trên nhiều bộ xử lý trong điện thoại, laptop, máy để bàn.
Blowfish có kích thước khối 64-bit và độ dài khóa 32-448 bit. Là mật mã Feistel 16 vòng và cần S-boxes lớn phụ thuộc khóa. Cấu trúc giống CAST-128, dùng S-boxes cố định.
Thuật toán Blowfish là một trong phổ biến nhất, nhưng cần sức tính toán thiết yếu với yếu tố làm chúng thành mồi tấn công. Có thể giảm kích thước "s-box" và thiết kế triển khai trên mạng nơ-ron (NN).
Đầu vào mạng nơ-ron là văn bản (bản rõ hoặc bản mã) và đầu ra từ mạng là cùng văn bản và khóa dùng cả mã hóa/giải mã là trọng số gốc của mạng nơ-ron được huấn luyện bằng lan truyền ngược.
Blowfish dùng dạng tạo khóa đặc biệt. Phần 2 của thủ tục Blowfish là mở rộng khóa biến khóa đơn lên đến 448-bit thành bảng khóa con 4168 byte. Tạo khóa con thêm cải thiện bảo mật, vì hacker phải bẻ nhiều hơn khóa gốc.
Độ bền thuật toán blowfish dựa trên tạo khóa con và thiết kế confusion/diffusion cơ bản. Blowfish là hệ mật mã chính đối xứng dựa trên mạng Feistel.
Bruce Schneider giới thiệu thuật toán. Là mật mã kích thước khối 64-bit, phiên bản hoàn chỉnh cần 16 vòng hoàn tất mật mã khối và dùng số lượng lớn khóa con, khóa độ dài biến đổi 32-448 bit.