【问题标题】:NodeJS - SHA256 Password EncryptionNodeJS - SHA256 密码加密
【发布时间】:2013-10-07 23:06:38
【问题描述】:

我目前正在学习 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);
      });
    });
  }
};

【问题讨论】:

标签: javascript node.js cryptography


【解决方案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);
};

【讨论】:

  • 实际上要生成一个在sha256中散列的密码,你必须使用digest 'hex': var hash = crypto.createHash('sha256').update(pwd).digest('hex');
  • 哈希仍然是sha256,只是编码不同。问这个问题的人也用base64作为他的编码,所以,我是这样回答的。
  • 是的,只是我猜有些人不管理编码并希望得到基本 SHA256 的结果(例如我),我花了一些时间来理解它,所以我只是想帮助下一个:p
  • 嗨,这只是加密。你能告诉我如何解密吗?。
  • 嗨@user740189,SHA 是一种单向算法,一种散列算法。它不应该被逆转,也不可能被逆转。散列算法旨在以独特的方式表示数据。它不是用来存储数据的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2013-09-11
  • 2019-02-20
相关资源
最近更新 更多