Bcrypt и соленые пароли - уточнение? - PullRequest
0 голосов
/ 02 июля 2019

Я использую библиотеку 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

В первой строке я генерирую соль. Позже я хеширую пароль с солью.

Но посмотрите на ответ, они фактически добавляют его к хешированному паролю вместо добавления соли, а затем хэшируют его.

Обратите внимание, что вы видите соль в хешированном пароле:

enter image description here

ИМХО, это не правильный способ сделать это. FWIW мы должны взять пароль + соль, а затем хэш.

Например:

enter image description here

На изображении видно, что в конечном результате соль не видна.

Вопрос:

Почему они внедрили такой пароль? это правильный путь? не опасно ли, что соль видна в конечном результате?

1 Ответ

0 голосов
/ 02 июля 2019

Соль хранится вместе с хешем, чтобы можно было ее проверить.

Если бы соль не хранилась, было бы невозможно проверить хеш, так как вы не знаете полный ввод хеша (включая соль).

Соль в том, чтобы каждый хеш был разным; не секрет.

...