Andrey Listochkin
“Отдельно” - это где? В отделбной базе на другом сервере? Так по факту не делают. Соль кладут рядом в соседнюю колонку в ту же таблицу. Когда база утекакет, утекают хеши с солью.
Смысл соли в том, что у каждого пароля она своя, и ты не можешь 100500 паролей сразу разшифровать из-за этого.
Что касается соли и bcrypt. Маленький ликбез - Bcrypt основан на blowfish - это симметричный алгоритм шифрования. Это важно. Расшифровать симметричный алгоритм крайне тяжело (в природе не зафиксированно криптоанализа против blowfish). Но есть одно но - в bcrypt мы шифруем всегда одну и туже фразу "OrpheanBeholderScryDoubt" ... с помощью вашего пароля. Сам по себе blowfish это блоковый ECB шифр. У ECB шифров есть особенность: один и тотже текст зашифрованный с помощью одного и тогоже ключа будет каждый раз давать один и тотже шифрованный такст. Это важно! Чтобы этого не произошло мы к паролю добавляем псевдослучайную последовательность "соль". Тогда два пользователя с одинаковыми паролями которыми шифруют всегда одну и туже фразу будут иметь разные шифрованные тексты (или как их называют плохие дядьки - хеши). Кроме того соль защищает нас от атак по словарю типа rainbow. Это когда мы заранее шифруем кучу всего а потом просто сравниваем шифры с шифрами в вашей базе данных. И да ! Никаких атак на расшифровку против blowfish мне неведомы. Только брутфорс всемогущий.