2017-01-10 10 views
2

Я хотел бы использовать node.js bcrypt для хэш-паролей, прежде чем хранить их в базе данных.Почему соль не нужна, чтобы сравнить, правильно ли пароль в bcrypt?

Эта ссылка содержит документацию. https://github.com/kelektiv/node.bcrypt.js

Приведен пример использования хэширования пароля.

var bcrypt = require('bcrypt'); 
const saltRounds = 10; 
const myPlaintextPassword = 's0/\/\P4$$w0rD'; 

var salt = bcrypt.genSaltSync(saltRounds); 
var hash = bcrypt.hashSync(myPlaintextPassword, salt); 
// Store hash in your password DB. 

Вот код для проверки пароля.

// Load hash from your password DB. 
bcrypt.compareSync(myPlaintextPassword, hash); // true 

Это то, что я не понимаю. В bcrypt.compareSync, почему нет параметров salt? Поскольку хэш генерируется из соли, почему сравнение пароля открытого текста не включает исходную соль, используемую в хешировании?

ответ

3

Соль часть строки Bcrypt магазинов в базе данных, смотри, например, ответ на Do I need to store the salt with bcrypt?

+0

Спасибо. Если соль является частью сгенерированного хеша, не может ли это сделать код bcrypt менее безопасным? – user781486

+2

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

 Смежные вопросы

  • Нет связанных вопросов^_^