This module provides native bindings to Keccak sponge function family from Keccak Code Package. In browser pure JavaScript implementation will be used.
You can use this package as node Hash.
const createKeccakHash = require('keccak')
console.log(createKeccakHash('keccak256').digest().toString('hex'))
// => c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
console.log(createKeccakHash('keccak256').update('Hello world!').digest('hex'))
// => ecd0e108a98e192af1d2c25055f4e3bed784b5c877204e73219a5203251feaab
Also object has two useful methods: _resetState
and _clone
const createKeccakHash = require('keccak')
console.log(createKeccakHash('keccak256').update('Hello World!')._resetState().digest('hex'))
// => c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
const hash1 = createKeccakHash('keccak256').update('Hello')
const hash2 = hash1._clone()
console.log(hash1.digest('hex'))
// => 06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2
console.log(hash1.update(' world!').digest('hex'))
// => throw Error: Digest already called
console.log(hash2.update(' world!').digest('hex'))
// => ecd0e108a98e192af1d2c25055f4e3bed784b5c877204e73219a5203251feaab
I thought it will be popular question, so I decide write explanation in readme.
I know a few popular packages on npm related with Keccak:
- sha3 (phusion/node-sha3 on github) — not actual because support only keccak.
- js-sha3 (emn178/js-sha3 on github) — brilliant package which support keccak, sha3, shake. But not implement node Hash interface unfortunately!
- browserify-sha3 (wanderer/browserify-sha3 on github) — based on js-sha3 (but not support shake!). Support node Hash interface, but without streams.
- keccakjs (axic/keccakjs on github) — uses sha3 and browserify-sha3 as fallback. As result keccak only with node Hash interface without streams.
This library is free and open-source software released under the MIT license.