【发布时间】:2016-03-17 18:35:59
【问题描述】:
我想从 URL 计算资源(例如 PDF)的哈希值。为此,我写了
const computeHash = co.wrap(function* main(url) {
const response = yield promisify(request)(url);
// assume response.status === 200
const buf = new Uint8Array(response.arrayBuffer);
const hash = crypto.createHash('sha1');
hash.update(buf, 'binary');
return hash.digest('hex');
});
使用
const hash = yield computeHash('http://arxiv.org/pdf/1001.1234v3.pdf');
我喜欢代码的地方:
- 它是一个生成器,所以我可以
yield它。距离async/await仅一步之遥。
我不喜欢的:
- 它没有正确计算散列。 :)
-
request已完成,响应主体作为一个整体通过管道传输到hash函数中。 我宁愿将request的输出通过管道传输到哈希函数中。
有什么提示吗?
【问题讨论】:
-
你怎么知道它没有正确计算哈希?你要对比什么?
-
sha1sum在本地计算。无论 url 是什么,它总是计算相同的哈希值。
标签: javascript node.js hash cryptography request