Шифрование паролей NodeJS - SHA256
В настоящее время я изучаю шифрование и безопасность паролей в NodeJS. Я работаю с текущим примером, который в настоящее время использует PBKDF2, я бы хотел переключить его, чтобы вместо этого использовать SHA256. Возможно ли это и/или иметь смысл? Как я могу это сделать?
var crypto = require('crypto');
var len = 128;
var iterations = 13000;
module.exports = function (pwd, salt, fn) {
if (3 == arguments.length) {
crypto.pbkdf2(pwd, salt, iterations, len, fn);
} else {
fn = salt;
crypto.randomBytes(len, function(err, salt){
if (err) return fn(err);
salt = salt.toString('base64');
crypto.pbkdf2(pwd, salt, iterations, len, function(err, hash){
if (err) return fn(err);
fn(null, salt, hash);
});
});
}
};
Ответы
Ответ 1
Если вы хотите сгенерировать хэши sha256
, вам придется отбросить свойства итераций и длины, как те, которые относятся к pbkdf2
. Затем вы использовали бы crypto.createHash()
, который использует OpenSSL для генерации хэшей. При этом типы хешей, которые вы можете создать, зависят от версии OpenSSL, которую вы установили.
var crypto = require('crypto');
var hash = crypto.createHash('sha256').update(pwd).digest('base64');
Ваша конкретная реализация может выглядеть так:
var crypto = require('crypto');
module.exports = function(pwd, fn) {
var hash = crypto.createHash('sha256').update(pwd).digest('base64');
fn(null, hash);
};