Я использую библиотеку Bcrypt nuget , которая является утилитой шифрования, реализующей шифр Blowfish
Простой сценарий - создать хешированный пароль + соль.
Есть одна вещь, которую я не понимаю о том, как они это реализовали.
Пример:
var salt= BCryptHelper.GenerateSalt(12);
Console.WriteLine(salt);
var hashedPassword = BCryptHelper.HashPassword("myPassword",salt) ;
Console.WriteLine(hashedPassword);
Console.WriteLine(BCryptHelper.CheckPassword("myPassword",hashedPassword));
вывод:
$2a$12$RqHpb3v6MeaB5sj0wcasKO
$2a$12$RqHpb3v6MeaB5sj0wcasKO/QkBTgrfVRYk95sT.OGIdU.O/Ip4goi
True
В первой строке я генерирую соль.
Позже я хеширую пароль с солью.
Но посмотрите на ответ, они фактически добавляют его к хешированному паролю вместо добавления соли, а затем хэшируют его.
Обратите внимание, что вы видите соль в хешированном пароле:
ИМХО, это не правильный способ сделать это.
FWIW мы должны взять пароль + соль, а затем хэш.
Например:
На изображении видно, что в конечном результате соль не видна.
Вопрос:
Почему они внедрили такой пароль? это правильный путь? не опасно ли, что соль видна в конечном результате?