我需要在每个上传的文件上生成一个哈希值。散列必须与为给定文件生成的散列git相同(在外行术语中,是sha1的变体)。
我调查了/nodejs-v0.10.22-src/core-modules-sources/lib/crypto.js
。该库指的是本机绑定。为了便于携带,我不希望依赖于本机代码。
有没有办法在JavaScript中将自定义加密算法添加到nodejs加密模块中,以便我可以执行以下操作:
var hash = crypto.createHash('githash');
hash.update('...');
答案 0 :(得分:1)
快速回答是否定的,您无法扩展crypto
模块中可用的哈希值。检查给定的哈希值
https://github.com/joyent/node/blob/v0.10.22/src/node_crypto.cc#L2856
并且基本上取决于OpenSSL支持的哈希值。
您可能可以将createHash
修改为重定向到您自己的代码,但是不可取。
相反,我建议在bodyParser完成后重新使用中间件用法来散列数据,或者跳过标准的bodyParser并为您的特定用例实现自己的。
答案 1 :(得分:1)
这里要注意一些要点:
git不使用不同的哈希。这是sha1。它只是为数据添加了一些额外的字符。见here。为此添加另一个哈希是不合理的。
你只需要连接body的bodyParser,考虑在那里添加一个补丁。但是,
将在connect 3.0中删除bodyparser。您将被要求自己解析身体/表格。