@frontendo

Почему bcrypt в node такой медленный?

Есть такой код

const bcrypt = require('bcrypt-nodejs');
  async encodePassword(password) {
    let st = Date.now();
    const a = await bcrypt.hashSync(password, bcrypt.genSaltSync(1));
    console.log('hash-' + (Date.now() - st));
    return a;
  }


что асинхронно, что синхронно выполняется за 500-700мс. Хеширует пароль из 6 символов для хранения в бд. Использую sequelize. Не пойму, в чем прикол. Перепробовал все модули подобные в ноде, у всех катастрофически долгое выполнение. Может я чего-то недопонимаю. Интересно, каким инстрмуентом для хеширования паролей пользуются другие
  • Вопрос задан
  • 1046 просмотров
Решения вопроса 1
teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно
А зачем используете синхронно? Используйте асинхронно hash вместо hashSync
А вообще я юзаю стандартный crypto
Пример async
const crypto = require('crypto');
const util = require('util');
const cryptoPbkdf2 = util.promisify(crypto.pbkdf2); 

let hashLength = 16;
let iterations = 10;
async function createSaltHash(email) {
    let salt = crypto.randomBytes(hashLength).toString('base64');
    let hash = (await cryptoPbkdf2(email, salt, iterations, hashLength, 'sha512')).toString();
    return { salt, hash }
};

async function checkSaltHash(email, salt, hash) {
    if (!email || !hash || !salt) return false;
    let userHash = (await cryptoPbkdf2(email, salt, iterations, hashLength, 'sha512')).toString();
    let check = userHash == hash;
    return check;
};

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы