For a few node projects of mine, I depend on hashing, predominantly MD5 and HMAC-SHA1 signing. Until recently, I depended on a library called hashlib for quickly generating my digests. Its got a very quick and simple syntax, and is written in C/C++.

var hashlib = require('hashlib');

hashlib.md5('something');
hashlib.hmac_sha1('something', 'key');

This worked really well for a while, until node 0.6 hit and there were some compatibility issues (on build the extension, and the occassional segfault). I turned away, and back to the crypto library, which is part of the standard library.

var crypto = require('crypto');

var md5er = crypto.createHash('md5');
md5er.update('something');
md5er.digest('hex');

var hmacer = crypto.createHmac('sha1', 'key');
hmacer.update('something');
hmacer.digest('hex');

The syntax, while longer, feels more flexible.

My true appreciation for hashlib, if the issues are resolved I’ll definitely go back. For the time being, crypto is an easy replacement that’s stable in node 0.6+.