this version will run with npm start, but when attempting to run the built version behind nginx, it appears to have issues
sha.js
Node style SHA on pure JavaScript.
var shajs = require('sha.js')
console.log(shajs('sha256').update('42').digest('hex'))
// => 73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049
console.log(new shajs.sha256().update('42').digest('hex'))
// => 73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049
var sha256stream = shajs('sha256')
sha256stream.end('42')
console.log(sha256stream.read().toString('hex'))
// => 73475cb40a568e8da8a045ced110137e159f890ac4da883b6b17dc651b3a8049
supported hashes
sha.js currently implements:
- SHA (SHA-0) -- legacy, do not use in new systems
- SHA-1 -- legacy, do not use in new systems
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Not an actual stream
Note, this doesn't actually implement a stream, but wrapping this in a stream is trivial. It does update incrementally, so you can hash things larger than RAM, as it uses a constant amount of memory (except when using base64 or utf8 encoding, see code comments).
Acknowledgements
This work is derived from Paul Johnston's A JavaScript implementation of the Secure Hash Algorithm.