与上面的答案类似,但这显示了如何进行多次写入;例如,如果您从文件中逐行读取,然后将每一行作为单独的操作添加到哈希计算中。
在我的示例中,我还修剪换行符/跳过空行(可选):
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
}
我使用此代码确保文件的生成行不会被某人手动编辑。为此,我将这些行写出来,附加一行sha256:<hash>
与 sha265-sum 类似的行,然后在下次运行时验证这些行的哈希是否与所述 sha265-sum 匹配。