我试着用两种不同的方法计算sha256散列,只有一种给出了正确的结果.
import { createHash } from 'node:crypto';
import { Readable } from 'node:stream';
function f1(info: NodeJS.ReadableStream) {
return new Promise((resolve, reject) => {
const hash = createHash('sha256');
info.on('data', (data) => hash.update(data));
info.on('end', () => resolve(hash.digest('hex')));
info.on('error', (error) => reject(error));
});
}
function f2(info: NodeJS.ReadableStream){
const hasher = createHash('sha256');
return info.pipe(hasher).digest('hex');
}
export async function test() {
const h1 = await f1(Readable.from('Testing'));
const h2 = f2(Readable.from('Testing'));
console.log(h1);
console.log(h2);
}
test();
输出:
e806a291cfc3e61f83b98d344ee57e3e8933cccece4fb45e1481f1f560e70eb1
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
只有f1
人给出了正确的散列.有没有人知道为什么会这样?