A block cipher like Blowfish is always used in some mode of operation, which says how to operate on texts longer than the block size.
All secure modes are using an initialization vector to make sure that even identical plain texts will give different ciphertexts. (ECB mode, which is not secure, does not use an initialization vector. I hope you are not using ECB mode.)
Depending on the mode, the initialization vector has to be either completely random (and not guessable before fixing the plaintext), for example in CBC mode, or simply non-repeating within the usage of one key (a nonce), like in CTR mode.
Re-using an initialization vector is generally a bad idea. For CTR-mode, it effectively transforms the cipher into a two-or-more-times-pad, generating the same key stream each time. XORing two ciphertexts give the same result as XORing two plaintexts, and if one of them is known, everything is known (other than the key). (The same applies to OFB mode).
For CBC-mode, especially when combined with fixed prefixes of the encrypted data, it leads to identical prefixes of the ciphertext - thus an attacker can see if two entries have the same plaintext, from only looking at the ciphertext.
In our example of 20+5 characters, as Blowfish has 64-bit (8 bytes) blocks (like DES/3DES), and I assume one-byte characters, your 20-character prefix corresponds to two and a half fixed blocks, i.e. four bytes to guess in the third block, with one byte remaining in the fourth block (suitably padded).
So any two entries with the same first four bytes of your changing data have an identical third block, too.
(CFB-mode behaves for the block after the fixed prefix, i.e. the third one, like CTR/CFB.)
Never use a fixed initialization vector for multiple messages with the same key.
If you can't afford storage of the initialization vector with the messages (which I doubt), you could use CTR mode with an initialization vector derived from some identifier of the database row, for example. (But don't use IVs which only differ in the last some bits, multiply them by some factor first.)
There is nothing Blowfish specific in here, other than Blowfish has 64-bit blocks. The same applies to AES (with 128-bit blocks).
crypt
is a hash function (for passwords and the like), not encryption. The CRYPT_BLOWFISH variant it supports is actually bcrypt (not plain Blowfish), and automatically includes a salt (but one could pass a constant salt here). – Paŭlo Ebermann Nov 22 '11 at 18:53