Salt is the addition of characters, words, terms or even numbers that give a certain randomness to the algorithms and help make them indecipherable.
To illustrate, I will consider here the reversal of the text (ABC -> CBA) as a type of encryption, only to demonstrate what happens to SALT in order to facilitate human understanding. In the real world, it is not humans who do this work, they are algorithms based on mathematical models.
Based on the above example, imagine a password "123456" using this algorithm (poorly by the way) you would get "654321".
With a known password and its encrypted result, you can identify which algorithm was used to generate it. The complexity of the algorithm and the password are determinant in the time needed to break it. Until now, mathematically any password can be broken, however it is important to emphasize that in many cases if it would take hundreds or thousands of years, therefore, it is assumed that these passwords and algorithms are safe.
While in the real world do not use simple algorithms like that, it's not just humans trying to break these encryptions, specialized algorithms also do this dirty work, so the need arises to make those passwords safer.
The salt consists of adding characters, words, terms or even numbers that randomize the result of encryption and help make it more complex. They are usually added before encryption, and can be fixed or random.
Considering the same algorithm, let's take the example:
Senha: 123456
Salt: 20170323
Senha+Salt: 12342017032356
Senha Criptografada: 65323071024321
You can create random, dynamic salts that do not even need to be stored. You can use data from the record itself to determine a salt (date of registration, or date of creation). All this helps increase randomness and thus helps to hinder identification of the pattern used to encrypt something.