Size: a a a

Node.js — русскоговорящее сообщество

2021 March 21

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
я прочитал. Я не могу понять, как бикрипт сравнивает строку с хэшем при том, что у него хэш каждый раз на одну и ту же строку получается разный, т.к. разной выходит соль
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
я прочитал. Я не могу понять, как бикрипт сравнивает строку с хэшем при том, что у него хэш каждый раз на одну и ту же строку получается разный, т.к. разной выходит соль
Когда бикрипт сравнивает, он сравнивает строки без "учёта" соли, они получаются одинаковыми
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
гляньте гист, пожалуйста: https://gist.github.com/Khuzha/a864240064b4805a51b70c67315020d8

генерирую с солью. С одинаковой солью да, хэш выходит одинаковым. Но при новом запуске, когда соль будет новой, и строка полностью новая. Т.е. не так, что начало, соль другая, а конец одинаковый
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
гляньте гист, пожалуйста: https://gist.github.com/Khuzha/a864240064b4805a51b70c67315020d8

генерирую с солью. С одинаковой солью да, хэш выходит одинаковым. Но при новом запуске, когда соль будет новой, и строка полностью новая. Т.е. не так, что начало, соль другая, а конец одинаковый
Соль может быть любой
источник

7

7384114837 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
console.log(bcrypt.genSaltSync(10));
console.log(bcrypt.genSaltSync(10));
console.log(bcrypt.genSaltSync(10));

Выдает:
$2b$10$Pfl1AApWu3OaXmWj1cEz1u
$2b$10$cKrK9uVZD24RZu4fBjH/1O
$2b$10$LpyUimXE977ZYzj.y16Gwu
Смотри

Ты генерируешь соль
Шифруешь данные с солью

Соль и хеш сохраняешь в бд

Когда тебе надо сравнивать данные ты берешь соль из бд
Генерируешь так же строку и сравниваешь с хешем
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Сумма остаётся одна и та же
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
7384114837
Смотри

Ты генерируешь соль
Шифруешь данные с солью

Соль и хеш сохраняешь в бд

Когда тебе надо сравнивать данные ты берешь соль из бд
Генерируешь так же строку и сравниваешь с хешем
Разве там соль нужно передавать отдельно при сравнении?
источник

7

7384114837 in Node.js — русскоговорящее сообщество
🍏
Разве там соль нужно передавать отдельно при сравнении?
можно и без нее
источник

7

7384114837 in Node.js — русскоговорящее сообщество
просто чел пишет, что строки разные генерятся.
источник

7

7384114837 in Node.js — русскоговорящее сообщество
тут все будет ровно)
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
7384114837
просто чел пишет, что строки разные генерятся.
Я ж скинул вику на соленое :(
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
Например, тут я не передаю соль бикрипту:
const src = 'hello world';

const oldHash = '$2b$10$LoFfv/RCHkVO1leLS8UMwe.bljq9q5/9H.azm7KLuOxxrQylD0Rwy';

console.log(`compare = ${bcrypt.compareSync(src, oldHash)}`);


И даю старый хэш. И он без соли подтверждает, что это хэш данной строки
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
@Sardorkhuja, Проще тогда сурцы разобрать, яснее будет, чем от любых объяснений)
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
попробую, просто думал, что дойдет до меня, если кто-то объяснит)
источник

7

7384114837 in Node.js — русскоговорящее сообщество
🍏
@Sardorkhuja, Проще тогда сурцы разобрать, яснее будет, чем от любых объяснений)
+ почитай информацию в доке, или в статейке какой-нибудь
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
Так во всех статьях пишут, что хэш-функции на одинаковые исходные данные выдают одинаковые хэши..
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Если их не солить)
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
Так во всех статьях пишут, что хэш-функции на одинаковые исходные данные выдают одинаковые хэши..
А так, всё верно
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
Вот в этом и вопрос)) как бикрипт сравнивает посоленные хэши, не зная их соли?
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
попробую, просто думал, что дойдет до меня, если кто-то объяснит)
Не надо самому соль генерить. Функция hash сама это делает.

И хеш, который она возвращает, уже содержит соль.

Функция compare берет соль из хеша и с ней генерит другой хеш
источник