A cryptographic hash function is a one-way function that assigns a fixed-length output value to an input value, given as a string of arbitrary length, with the property that it is practically impossible to determine a corresponding input value for a given output value if the number of possible input values is unlimited.
A salt is a randomly chosen string that is appended to an input value of a hash function (before the hash function is applied). The output value of the hash function is therefore no longer solely dependent on the input value, but also on the salt used.