Main features of the design include key-dependent S-boxes and a very complex key schedule. Blowfish is one of the fastest block ciphers used by many people, except when changing keys. Each new key needs to be pre-processed which takes the same time as encrypting about 4 kilobytes of text, which is very slow compared to other block ciphers. This stops its use in certain applications (such as in the smallest embedded systems like the early smartcards), but it is not a problem in other applications. In one of the applications, it is actually good: the password-hashing method used in OpenBSD uses an algorithm that comes from Blowfish which makes use of the slow key schedule; the idea is that the extra computational effort required gives protection against dictionary attacks. "See" key strengthening.