Używam bcrypt do generowania soli i hash haseł, ale nie sądzę, że robi to bardzo bezpiecznie. Gdy używam następujący kod:Bcrypt nie jest bezpieczny przy haszowaniu haseł?
bcrypt.genSalt(10, function(err, salt) {
user.salt = salt;
bcrypt.hash(password, salt, function(err, hash) {
user.hashed_password = hash;
console.log(user.salt);
console.log(user.hashed_password);
user.save(function(err) {
if (err) console.log(err);
console.log("saved");
});
});
});
W jednym przykładzie, sól jest: $2a$10$mFFjRpY1Vrq7Fy1fFp0fMO
i hashed_password jest: $2a$10$mFFjRpY1Vrq7Fy1fFp0fMOVnlv9cKgAFdCQ5xdtlP6UoKz90i1FMu
Początek zaszyfrowany hasłem jest dokładnie taka sama jak sól. Jeśli atakujący ma dostęp do soli, czy nie może po prostu usunąć soli z hasha_hasła i albo brutalną siłą, albo użyć tabeli z góry ustalonych wartości hashowych w celu ustalenia hasła?
Zawsze myślałem, to powinna być kolejność mieszania hasło:
hash(salt + password)
wolno:
salt + hash(password)