У меня есть сайт PHP, на котором хранятся пароли пользователей в зашифрованном виде.
Используемый метод crypt($password, $salt)
. Соль генерируется случайным образом.
Результат что-то вроде
$2a$08$saltsaltsaltsaltsaltsaltsaHashHashHashHashHashHashHash
Теперь я должен войти в эту базу данных, используя что-то отличное от PHP, например .СЕТЬ. Проблема сейчас: crypt()
не существует в .NET.
Сейчас думаю переписать crypt()
в .NET и извлеките солью сверху хэш пароля.
Безопасно ли делать соль, используемую для хеширования пароля, общедоступной? Или я сильно ослабляю безопасность?
Да, посылать соль всем, кто ее просит, небезопасно. Знание этого делает количество возможных значений для угадывания гораздо меньшим, и гораздо проще использовать атаки методом грубой силы, чтобы угадать оригинальный несоленый пароль. Увидеть этот ответ в security.stackexchange.com Больше подробностей.
Других решений пока нет …