41

現在、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);
      });
    });
  }
};
4

1 に答える 1

83

ハッシュを生成したい場合はsha256、 iterations と length プロパティを削除する必要があります。これらは に固有のものpbkdf2です。次に、crypto.createHash()OpenSSL を使用する which を使用してハッシュを生成します。そうは言っても、生成できるハッシュの種類は、インストールした 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);
};
于 2013-10-08T00:30:43.087 に答える