http://www.net-security.org/dl/artic...ryptoSalts.pdf
The unfortunate truth is that if the users pass phrase is weak, it will still be possible to break it using a dictionary attack. When building encryption software it is always a good idea to prevent users from choosing weak passwords.
It is a good idea to quickly search trough a small dictionary of English words for the users pass phrase, and if found suggest that they change it. Since at this point we have the original pass phrase and we do not have to derive it through the S2K function, this search can be fairly quick.
Another good idea is to include a random number generator in the software so that a user
has the ability to select a random pass-phrase. This has its own problems since it’s
extremely hard for users to memorize such pass phrases.
The last and most important advice is not to make it easy for an attacker to retrieve the
encrypted data. Without having local access to the file there is no way to mount a dictionary
attack in the first place.