1

我需要在每个上传的文件上生成一个哈希。哈希必须与为给定文件生成的哈希 git 相同(在外行术语中,它是 sha1 的变体)。

我调查了/nodejs-v0.10.22-src/core-modules-sources/lib/crypto.js。该库是指本机绑定。为了可移植性,我不想依赖本机代码。

有没有办法在 JavaScript 中将自定义加密算法添加到 nodejs 加密模块中,以便我可以执行以下操作:

var hash = crypto.createHash('githash');
hash.update('...');
4

2 回答 2

1

快速回答是否定的,您不能扩展crypto模块中可用的哈希值。给定的哈希在 https://github.com/joyent/node/blob/v0.10.22/src/node_crypto.cc#L2856检查 ,基本上取决于 OpenSSL 支持的哈希。

您可能可以通过猴子补丁createHash重定向到您自己的代码,但不建议这样做。

相反,我建议您在 bodyParser 完成后重新使用中间件来散列数据,或者跳过标准的 bodyParser 并为您的特定用例实现自己的。

于 2013-12-10T08:55:03.790 回答
1

这里需要注意的几点:

  1. git 不使用不同的哈希。这是sha1。它只是为数据添加了一些额外的字符。见这里。为此添加另一个哈希是不合理的。

  2. 你只需要它来连接的 bodyParser,考虑在那里添加一个补丁。但,

  3. bodyparser 将在 connect 3.0 中删除。您将需要自己解析正文/表格。

于 2013-12-10T08:56:16.350 回答