Salt — случайная строка, которая добавляется к паролю перед хешированием. Без salt одинаковые пароли дают одинаковые хеши, и атакующий может использовать precomputed таблицы (rainbow tables). С уникальным salt для каждого пользователя: hash("password" + "random_salt_1") != hash("password" + "random_salt_2"). Salt хранится вместе с хешем (не секретен). В Go bcrypt (golang.org/x/crypto/bcrypt) добавляет salt автоматически. Если делаешь вручную — генерируй через crypto/rand, минимум 16 байт.