将SHA-256与NodeJS加密一起使用

Cam*_*ron 26 node.js node-crypto

我试图在NodeJS中散列变量,如下所示:

var crypto = require('crypto');

var hash = crypto.createHash('sha256');

var code = 'bacon';

code = hash.update(code);
code = hash.digest(code);

console.log(code);
Run Code Online (Sandbox Code Playgroud)

但看起来我误解了文档作为console.log没有记录一个哈希版本的培根,而只是一些关于SlowBuffer的信息.

这样做的正确方法是什么?

Max*_*meF 51

BASE64: __CODE__

十六进制: __CODE__

  • 不使用 sha256 对密码进行哈希处理吗?查找 bcrypt 或类似的东西。 (8认同)
  • //进入十六进制:crypto.createHash('sha256').update('password').digest('hex'); (4认同)
  • 考虑到哈希是错误的,我不确定这个答案如何获得如此多的赞成票。正确的base64编码,'bacon'的sha256哈希实际上是以“nMoHAzQuJI...”开头的散列*不是*以“OWNjYTA3MD...”开头的散列......加密库正在做你所告诉它的事情..创建培根的哈希值并将其编码为base64,得到“nMoHAzQuJIBqn2TgjAU9yn8s2Q8QUpr46ocq+woMd9Q=” (3认同)

小智 7

你可以使用,像这样,在这里创建一个重置令牌(resetToken),这个令牌用于创建一个十六进制版本。在数据库中,你可以存储十六进制版本。

// Generate token
 const resetToken = crypto.randomBytes(20).toString('hex');
// Hash token and set to resetPasswordToken field
this.resetPasswordToken = crypto
    .createHash('sha256')
    .update(resetToken)
    .digest('hex');

console.log(resetToken )
Run Code Online (Sandbox Code Playgroud)


Sil*_*des 6

另一种方式:

const {createHash} = require('node:crypto');
const result = createHash('sha256').update("bacon").digest('hex');
console.log(result);
Run Code Online (Sandbox Code Playgroud)