有没有办法在nodejs加密模块中添加自定义加密算法?怎么样?

时间:2013-12-10 06:54:01

标签: node.js git hash cryptography node-crypto

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

我调查了/nodejs-v0.10.22-src/core-modules-sources/lib/crypto.js。该库指的是本机绑定。为了便于携带,我不希望依赖于本机代码。

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

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

2 个答案:

答案 0 :(得分:1)

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

您可能可以将createHash修改为重定向到您自己的代码,但是不可取。

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

答案 1 :(得分:1)

这里要注意一些要点:

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

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

  3. 将在connect 3.0中删除bodyparser。您将被要求自己解析身体/表格。