Salt is stored in unencrypted form along with encrypted data.
The purpose of the salt is to prevent an attacker from pre-computing a dictionary of encrypted passwords. (As in the case, the attacker spends a year or whatever generates the encrypted form of each word in each language.)
Another purpose of the salt is to make sure that two users have different encrypted passwords, even if their unencrypted passwords are the same.
None of the goals require salt to be kept secret.
[update, clarify]
See Wikipedia for Salt (cryptography) . In particular, read the opening paragraphs.
The purpose of the salt is to accept a non-random input (for example, user-provided data) and make it random before passing it through a cryptographic function. For this to work, salt must be randomly generated for each input.
A traditional example is storing encrypted passwords. Most users reliably choose non-random passwords, therefore without salt everyone who selects "SEKRIT" as a password ends the work with the same encrypted password in the password database. The solution is to add a random salt before encrypting the password, and then save it (in clear text) along with the encrypted password.
source share