Size: a a a

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

2021 March 21

🍏

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

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
7384114837
соль
Написал такой простейший пример:
const bcrypt = require('bcrypt');

const src = 'hello world';
console.log(`src = ${src}`);
const res1 = bcrypt.hashSync(src, 10);
const res2 = bcrypt.hashSync(src, 10);

console.log(`hash 1 = ${res1},\nhash 2 = ${res2}`);
console.log(`compare 1 = ${bcrypt.compareSync(src, res1)}`);
console.log(`compare 2 = ${bcrypt.compareSync(src, res2)}`);


Он выдает:
src = hello world
hash 1 = $2b$10$1xERx07vY1HAIa600CWcZecuioeIfLW1y99XlOMvJh2tuGqIQ5eai,
hash 2 = $2b$10$D0U3B7OUAfetndiEdZd6Ked8UZuQl0EC6Evpo5bVbalfJzH1ADDMW
compare 1 = true
compare 2 = true


Т.е. строка всегда остается одна, а хэш 1 отличается от хэша 2. В compare генерируется еще два хэша, которые также будут уникальными, если я не ошибаюсь. Но bcrypt понимает, что все они от одной строки. Как это работает?
источник

🍏

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

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
но ведь она тоже каждый раз будет разная, разве нет?
источник

SK

Sergey Kazak in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
но ведь она тоже каждый раз будет разная, разве нет?
🙅‍♂️
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
но ведь она тоже каждый раз будет разная, разве нет?
источник

7

7384114837 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
Написал такой простейший пример:
const bcrypt = require('bcrypt');

const src = 'hello world';
console.log(`src = ${src}`);
const res1 = bcrypt.hashSync(src, 10);
const res2 = bcrypt.hashSync(src, 10);

console.log(`hash 1 = ${res1},\nhash 2 = ${res2}`);
console.log(`compare 1 = ${bcrypt.compareSync(src, res1)}`);
console.log(`compare 2 = ${bcrypt.compareSync(src, res2)}`);


Он выдает:
src = hello world
hash 1 = $2b$10$1xERx07vY1HAIa600CWcZecuioeIfLW1y99XlOMvJh2tuGqIQ5eai,
hash 2 = $2b$10$D0U3B7OUAfetndiEdZd6Ked8UZuQl0EC6Evpo5bVbalfJzH1ADDMW
compare 1 = true
compare 2 = true


Т.е. строка всегда остается одна, а хэш 1 отличается от хэша 2. В compare генерируется еще два хэша, которые также будут уникальными, если я не ошибаюсь. Но bcrypt понимает, что все они от одной строки. Как это работает?
А где соль?
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
7384114837
А где соль?
Скорее всего 2 param
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
На hash
источник

7

7384114837 in Node.js — русскоговорящее сообщество
🍏
Скорее всего 2 param
Там нет соли, там количество знаков на рандомный ключ
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
bcrypt.hashSync(myPlaintextPassword, salt);
источник

7

7384114837 in Node.js — русскоговорящее сообщество
Sardorkhuja Tukhtakhodjaev
но ведь она тоже каждый раз будет разная, разве нет?
Не будет она разная. Как по-твоему сравнивают пароли на бэке? Там не дешифруют данные. Там шифруют по ключу входные данные и сравнивают их с теми, что в бд
источник

7

7384114837 in Node.js — русскоговорящее сообщество
Бля как неудобно с клавы нв тедефоне писать. Весь смысл исковеркало автоисправление
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
7384114837
Бля как неудобно с клавы нв тедефоне писать. Весь смысл исковеркало автоисправление
Та же тема, ещё неудобно код с переносами в тг смотреть 🤷‍♂
источник

7

7384114837 in Node.js — русскоговорящее сообщество
🍏
Та же тема, ещё неудобно код с переносами в тг смотреть 🤷‍♂
Его не надо сюда кидать) для этого песочницы есть)
источник

🍏

🍏 in Node.js — русскоговорящее сообщество
Хотя бы пастбин :)
источник

7

7384114837 in Node.js — русскоговорящее сообщество
🍏
Хотя бы пастбин :)
+ хорошая штука)
источник

ST

Sardorkhuja Tukhtakh... in Node.js — русскоговорящее сообщество
7384114837
Не будет она разная. Как по-твоему сравнивают пароли на бэке? Там не дешифруют данные. Там шифруют по ключу входные данные и сравнивают их с теми, что в бд
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 — русскоговорящее сообщество
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
И что не так?)
Я не понимаю
источник

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
Перечитай что я написал
источник