与 NodeJS Crypto 一起使用 SHA-256

我尝试在 NodeJS 中散列一个变量,如下所示:

var crypto = require('crypto');


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


var code = 'bacon';


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


console.log(code);

但是看起来我误解了文档的意思,因为 console. log 并不记录培根的散列版本,而只记录一些有关 SlowBuffer 的信息。

正确的做法是什么?

161959 次浏览

base64:


var crypto = require('crypto');
const hash = crypto.createHash('sha256').update(input).digest('base64');

hex:

var crypto = require('crypto')
const hash = crypto.createHash('sha256').update(input).digest('hex');

nodejs (8) ref

const crypto = require('crypto');
const hash = crypto.createHash('sha256');


hash.on('readable', () => {
const data = hash.read();
if (data) {
console.log(data.toString('hex'));
// Prints:
//  6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
}
});


hash.write('some data to hash');
hash.end();

Similar to the answers above, but this shows how to do multiple writes; for example if you read line-by-line from a file and then add each line to the hash computation as a separate operation.

In my example, I also trim newlines / skip empty lines (optional):

const {createHash} = require('crypto');


// lines: array of strings
function computeSHA256(lines) {
const hash = createHash('sha256');
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim(); // remove leading/trailing whitespace
if (line === '') continue; // skip empty lines
hash.write(line); // write a single line to the buffer
}


return hash.digest('base64'); // returns hash as string
}

I use this code ensure generated lines of a file aren't edited by someone manually. To do this, I write the lines out, append a line like sha256:<hash> with the sha265-sum, and then, upon next run, verify the hash of those lines matches said sha265-sum.

you can use, like this, in here create a reset token (resetToken), this token is used to create a hex version.in database, you can store hex version.

// 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 )