cyclic-32
A tiny, streaming, seedable CRC32 library, compatible with Node's crypto.Hash API.
In less than 100 LOC.
Install via npm
$ npm install --save cyclic-32
Features
- Speed: ~300 MB/s on a 2012 Macbook Air
- Size: It's 96 lines of code (plus 22 lines of comments, and 17 blank)
- Streams: .pipe().pipe().pipe()
- Seedable: If you have more complex things in mind
- CLI: Possibly useful for npm run scripts
Usage
var crc32 = require( 'cyclic-32' )
Calculate the CRC32 checksum of a Buffer:
var buffer = new Buffer( 'I shall be summed', 'ascii' )
console.log( crc32( buffer ) )
Pass a seed value:
var buffer = new Buffer( 'I shall be summoned', 'ascii' )
console.log( crc32( buffer, 666 ) )
Calculate the CRC32 checksum over a Stream:
fs.createReadStream( filename )
.pipe( crc32.createHash() )
.on( 'data', function( buffer ) {
console.log( 'CRC32:', buffer.toString( 'hex' ) )
})
If you want to pass an encoding
, or seed
:
fs.createReadStream( filename )
.pipe( new crc32.Hash({ encoding: 'hex', seed: -12345678 }) )
.on( 'data', function( checksum ) {
console.log( 'CRC32:', checksum )
})
Or, if you'd rather stick to the crypto.Hash
API:
var hash = crc32.createHash()
hash.update( 'I shall' )
.update( 'be summed' )
console.log( 'CRC32:', hash.digest( 'hex' ) )
CLI Usage
Calculate the checksum of a file:
$ crc32 filename
0a0ca5aa
Pipe stuff into it via stdin:
$ cat filename | crc32
ffe6bbc0